什么是&&和||在bash?

时间:2018-03-25 14:46:42

标签: bash boolean-logic

我正在尝试理解以下代码:

for f in *.out; do sort -cg <$f &>/dev/null && res="sorted" || res="unsorted"; echo "File $f is $res."; done

For循环遍历所有.out个文件并将每个文件作为参数提供给sort,并将排序的输出重定向到&#34; nothing&#34;。但有人可以解释一下:&& res="sorted" || res="unsorted"有什么作用?

1 个答案:

答案 0 :(得分:1)

仅当前一个命令以0(零)状态代码退出时,才会执行&&之后的命令。另一个||以相反的方式工作 - ||之后的命令只有在前一个命令以非零退出代码退出时才会执行。

这是一个小例子:

cat /some/file/that/is/missing && echo 'Found the file!' # doesn't print 
cat /some/file/that/is/missing || echo 'Unable to find the file!' # will print 

对于第一行,echo命令将不会执行,因为cat命令失败(因为该文件不存在)

使用第二行,我们将看到echo命令,因为cat命令失败。