鉴于您尝试检查变量是否为空且不是其他值,如以下代码所示:
if [ ! -z "$foo" ] && [[ ${foo} != "bar" ]]; then
实现这一目标的最佳实践是什么?我见过 bash 条件语句有多种写法,包括以下......
if [[ ! -z "$foo" && ${foo} != "bar" ]]; then
我知道使用单括号和双括号时有区别,我更关心何时放置&&
or ||
括号内或括号外。
Put &&
/||
括号内为[[ ]]
。外面也可以接受。
Put &&
/||
外括号为[ ]
。内部是不允许的。
这是因为&&
根据返回值将普通命令绑定在一起,例如
wget file && echo "Success"
[
尽管名字很有趣,但它是一个常规命令,并且遵循与例如相同的规则。wget
or echo
.
[ foo || bar ]
是两个命令,[ foo
and bar ]
,两者均无效。
[[ .. ]]
另一方面不是普通命令而是特殊的 shell 语法。[[ foo || bar ]]
是单个命令,并进行相应解释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)