鉴于您尝试检查变量是否为空而不是以下代码中的其他值:
if [ ! -z "$foo" ] && [[ ${foo} != "bar" ]]; then
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最佳实践是什么?我已经看过bash条件语写了几种方式,包括以下内容......
if [[ ! -z "$foo" && ${foo} != "bar" ]]; then
Run Code Online (Sandbox Code Playgroud)
我的理解是有区别的使用单支架和双时,我更关心的是,当把&&或||括号或出里面.
放入&&/ ||放在括号内[[ ]].外面也接受.
放置&&/ ||外部括号[ ].里面不允许.
这是因为&&基于返回值将正常命令绑定在一起的事实,例如
wget file && echo "Success"
Run Code Online (Sandbox Code Playgroud)
[尽管它有趣的名字,是一个常规的命令,并遵守与例如wget或相同的规则echo.
[ foo || bar ]是两个命令,[ foo并且bar ]都不是有效的.
[[ .. ]]另一方面,它不是正常的命令,而是特殊的shell语法.[[ foo || bar ]]是一个命令,并相应地解释.