我正在尝试理解以下代码:
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"
有什么作用?
答案 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
命令失败。