Pao*_*olo 2 bash if-statement dev-null
我使用以下脚本与文件夹进行比较:
if diff "/home/folder1/" "/home/folder2/" &> /dev/null ; then
echo "Files in the two folders are the same"
else
echo "Files in the two folders are NOT the same"
fi
Run Code Online (Sandbox Code Playgroud)
是否有一个简短的方法来解释“&> /dev/null”实际上是做什么的,它是否返回一个布尔值真/假?
我的主要问题是:相反会是什么?我的意思是,假设我希望“if diff”问题是“两个文件夹的内容不一样吗?”
您&> /dev/null将 stdout 和 stderr 输出重定向到/dev/null,有效地抑制了进程的所有输出。程序的退出代码(数字“结果”,通常表示“成功”(0)或“失败”(任何其他数字))不受此影响。
要反转条件 (the diff),只需插入一个感叹号,说明一个not运算符:
if ! diff "/home/folder1/" "/home/folder2/" &> /dev/null ; then
...
Run Code Online (Sandbox Code Playgroud)
当(且仅当)它没有发现任何差异时,该diff工具总是以退出值终止0。如果有差异,1就是退出值;如果有问题(I/O 错误或类似的事情),2是退出值。该if壳解释退出值的0是真实和所有其他值是假的(介意,因为这是其他编程语言的完全相反!)。