【发布时间】:2014-03-21 00:31:59
【问题描述】:
我想在 bash 中制作独占或。当我定义变量a 和b 时,我可以使用这个:
> a=1
> b=
> [ -z "$b" -a "$a" -o "$b" -a -z "$a" ] && echo yes
yes
但是,当我尝试使用我真正感兴趣的 shell 变量进行相同的构造时,它会失败:
> [ -z "$BASH_ARGV" -a "$@" -o "$BASH_ARGV" -a -z "$@" ] && echo sourced
bash: [: argument expected
发生了什么事?
【问题讨论】:
-
如果你只是想看看参数个数是否非零,看看
$#。如果您只关心$@包含的条目数,则无需查看其实际值。
标签: bash shell if-statement