linux bash如果$ a等于任何东西然后$ b等于1但是如果$ a等于什么,那么$ b等于零

时间:2014-12-01 21:31:06

标签: linux bash

默认标志将始终等于空或[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

2 个答案:

答案 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。"