混淆&&和||的使用 经营者

乔希·凯恩

我浏览了一个/etc/rc.d/init.d/sendmail文件(我知道这几乎没用过,但是我正在学习考试),并且我对&&||操作员有些困惑我已经阅读了可以在诸如以下语句中使用它们的地方:

if [ test1 ] && [ test2 ]; then
     echo "both tests are true"
elif [ test1 ] || [ test2 ]; then
     echo "one test is true"
fi

但是,此脚本显示单行语句,例如:

[ -z "$SMQUEUE" ] && SMQUEUE="QUEUE"
[ -f /usr/sbin/sendmail ] || exit 0

这些似乎正在使用&&and||运算符基于测试来引发响应,但是我无法从这些运算符的这种特殊用法中提取文档。谁能解释在特定情况下这些工具的作用?

肖恩·高夫(Shawn J.Goff)

&&仅当左侧的退出状态为零(即为true)时才会评估的右侧。||相反:只有在左侧出口状态为非零(即false)时,它才会评估右侧。

您可以考虑[ ... ]将其作为具有返回值的程序。如果内部测试的结果为true,则返回零;否则,返回零。否则返回非零。

例子:

$ false && echo howdy!

$ true && echo howdy!
howdy!
$ true || echo howdy!

$ false || echo howdy!
howdy!

额外说明:

如果这样做which [,您可能会看到[实际上确实指向一个程序!但是,通常它实际上不是在脚本中运行的那个。运行type [以查看实际运行的内容。如果您想尝试使用该程序,只需给出完整的路径,如下所示:/bin/[ 1 = 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章