默认标志将始终等于空或[0-9],如果默认标志等于[0-9],则track_number等于1,但如果track_number等于零,则track_number等于零
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 :(得分: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"
答案 1 :(得分:0)
最简单的解决方案是使用参数替换:
track_number=${default_flag:+1}
右侧的表达式正好意味着:"如果未设置default_flag或空字符串,则为空字符串,否则为字符串1
。"