if else 语句在一行中使用 && 和 ||

if else 语句在一行中使用 && 和 ||

我想知道这两种方式是否等效:

第一的:

#!/bin/bash
if [ -x $FILE ]
then
  echo "You have execution permission to a "$FILE""
else
  echo "You don't have execution permission to a "$FILE""
fi

第二:

#!/bin/bash
[ -x $FILE ] && echo "You have execution permission to a "$FILE"" || echo "You don't have execution permission to a "$FILE""

答案1

这些结构通常并不等效,但在本例中它们是等效的。原因是echo退出代码始终为 0。如果这是一个可以以大于零的代码退出的命令,那么“另一个分支”也将被执行。这在if本案中是不可能的。

相关内容