我使用以下脚本与文件夹进行比较:
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
是否有一种简短的方式来解释"&>的/ dev / null的"实际上,它是否返回布尔值true / false?
我的主要问题是:相反的是什么?我的意思是,说我想要"如果差异"问题是"两个文件夹的内容不一样吗?"
答案 0 :(得分:4)
您的&> /dev/null
将stdout和stderr输出重定向到/dev/null
,有效地抑制了进程的所有输出。程序的退出代码(数字“结果”,通常表示“成功”(0)或“失败”(任何其他数字))不受此影响。
要反转条件(diff
),只需插入一个感叹号,说明not
运算符:
if ! diff "/home/folder1/" "/home/folder2/" &> /dev/null ; then
...
diff
工具总是以退出值0
终止,如果(且仅当)它没有找到任何差异。如果存在差异,1
是退出值;如果有问题(I / O错误或此类事情),2
是退出值。 shell的if
将0
的退出值解释为 true ,并将所有其他值解释为 false (请注意,因为这是相当的与其他编程语言相反!)。
答案 1 :(得分:0)
diff "folder1" "folder2"
会返回两个文件夹之间的差异列表。
&> /dev/null
重定向 stdout(所有终端输出,这不是错误)所有stdout和stderr到名为null
的虚拟设备丢弃您的数据。< / p>
答案 2 :(得分:0)
&amp;&gt;将正常输出和错误重定向到文件。在这种情况下,它使用文件&#34; / dev / null&#34;这也被称为比特桶:它只是抛弃一切。这意味着输出被丢弃。如果你不这样做,你的脚本将显示命令的输出(你不想在输出中显示)。