2014-12-01 75 views
2

如果默認標誌等於[0-9],則默認標誌將總是等於無或[0-9]音軌等於1,但如果音軌等於一無所有然後音軌等於一無所有

default_flag=$(mkvmerge --identify-verbose video.mkv | awk -F'[ :]+' '$4=="subtitles"&&/default_track:1[[:space:]]/{print $3}') 

出於某種原因,這不起作用:

if [ -s $default_flag ]; then track_number=""; else track_number="1"; fi 
+0

「...但如果track_number等於什麼,那麼track_number就等於什麼」....嗯,是的。在你使用的絕大多數計算機語言中,情況都是如此。在平等上沒有表現出反身性質的系統是非常罕見的,並且有些難以使用... – twalberg 2014-12-01 22:00:18

回答

3

這種情況的問題是:

if [ -s $default_flag ]; 

man test

-s FILE 
      FILE exists and has a size greater than zero 

這裏你只是檢查空字符串,因此使用-z

你可以這樣做:

[[ -z "$default_flag" ]] && track_number="" || track_number="1" 
0

最簡單的解決方案是使用參數替換:

track_number=${default_flag:+1} 

右側的表達恰恰意味着:「如果default_flag未被設置或爲空字符串,則爲空字符串,否則爲字符串1。」

相關問題