我使用cmp
命令检查两个文件是否相同。我想将命令粘贴到一行if语句中,但它没有按预期工作。当比较两个文件和一个文件不存在时,cmp
返回2.由于2非零,我希望if语句评估为true,但它没有,我不会&#39不明白为什么。
我想写一些类似的东西:
if cmp -s tickets.txt tickets_orig.txt; then
#do stuff here
fi
因为我发现它简短,甜美,更直观。这可能吗?
我能够使用$?
创建一个变通方法,但我不明白为什么下面的代码将评估为true,并且当命令返回2时,上面的代码将评估为false:
cmp -s tickets.txt tickets_orig.txt
if [ $? -ne 0 ]; then
#do stuff here
fi
答案 0 :(得分:3)
退出状态($?)= 0表示shell逻辑成功,它允许为正常状态定义不同的错误代码1到127
if command; then #...
相当于
command;
if [ $? -eq 0 ]; then #...
和
command;
if [ $? -ne 0 ]; then #...
相当于
if ! command; then #...