我在比较脚本中的两个文件。使用命令
comm -3 123.txt 321.txt"
这两个文件123和321只有数字内容。
我也用
diff -ibw abc.txt cba.txt
这些文件abc和cba具有字母数字内容
如果没有不匹配没有打印输出,你可以帮我写下如下的条件。
如果没有区别我需要打印files match
如果存在差异,我想打印mismatch found
以及不匹配的输出。
答案 0 :(得分:0)
shell脚本非常简单。当您在Unix / Linux中执行diff
命令时,如果没有差异则返回0
,如果不同则返回1
,您可以在系统变量$?
中检查它。
例如: -
#!/bin/bash
diff abc.txt cba.txt > /dev/null 2>&1 #not to print the out put of from diff command
if [ $? -eq 0 ]; then
echo "files match"
else
echo "mismatch found"
fi
但是如果您使用不同的命令,只需在成功时使用echo $?
检查退出值,但不成功时相应地更改if
条件。
答案 1 :(得分:0)
如果使用GNU bash
,请使用内置列表运算符&&
和||
来执行此操作。
diff -ibw abc.txt cba.txt &>/dev/null && echo "Files Match" || echo "Files do not match"
来自man bash
:
AND和OR列表分别是由
&&
和││
控制运算符分隔的一个或多个管道的序列。和。和 OR列表以左关联性执行。 AND列表的格式为当且仅当command1 && command2
command2
返回退出状态为零时才执行
command1
。当且仅当An OR list has the form command1 ││ command2
command2
返回非零退出状态时,才执行
command1
。 AND和OR列表的返回状态是退出状态 最后一个 命令在列表中执行。