我浏览了一个/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||
运算符基于测试来引发响应,但是我无法从这些运算符的这种特殊用法中提取文档。谁能解释在特定情况下这些工具的作用?
&&
仅当左侧的退出状态为零(即为true)时,才会评估的右侧。||
相反:只有在左侧出口状态为非零(即false)时,它才会评估右侧。
您可以考虑[ ... ]
将其作为具有返回值的程序。如果内部测试的结果为true,则返回零;否则,返回零。否则返回非零。
例子:
$ false && echo howdy!
$ true && echo howdy!
howdy!
$ true || echo howdy!
$ false || echo howdy!
howdy!
额外说明:
如果这样做which [
,您可能会看到[
实际上确实指向一个程序!但是,通常它实际上不是在脚本中运行的那个。运行type [
以查看实际运行的内容。如果您想尝试使用该程序,只需给出完整的路径,如下所示:/bin/[ 1 = 1
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句