如果我不想在 if-then 块中执行任何操作,而是在 else 块中执行某些操作,该怎么办?

如果我不想在 if-then 块中执行任何操作,而是在 else 块中执行某些操作,该怎么办?
#intro
if [ -n "$1" ]
    then
        echo 666
    else
        echo 555
fi
exit;

其实我确实想要,echo 555但我不想在第一个区块中做任何事情,我该怎么办?我注意到我不能直接删除echo 666.

答案1

只是使用无操作:

if [ -n "$1" ]; then
  :
else
  echo 555
fi
exit

或反转逻辑:

if [ -z "$1" ]; then
  echo 555
fi
exit

答案2

[ -n "$1" ] && echo "666"  <= For if part
[ -n "$1" ] || echo "555"  <= For else part

答案3

!您可以通过在条件语句内使用(这称为“not”运算符,这意味着取结果的相反值)来反转 if 语句。这样就[ -n "$1" ]变成了:[ ! -n "$1" ],与该部分相同else

使用该-z选项而不是-n逻辑上与 相反的选项也是有效的-n,但作为一般规则,它将!始终匹配 else 部分将匹配的任何内容。

相关内容