0

我正在比较脚本中的两个文件。使用命令

comm -3 123.txt 321.txt" 

这两个文件 123 和 321 只有数字内容。

我也用

diff -ibw abc.txt cba.txt

这些文件 abc 和 cba 具有字母数字内容

如果没有不匹配,则不会打印输出,您能帮我如何编写如下条件。

如果没有差异,我需要打印files match 如果有差异,我想mismatch found与不匹配的输出一起打印。

4

2 回答 2

0

在 shell 脚本中非常容易。当您diff在 Unix/Linux 中执行命令时,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相应地更改您的条件。

于 2018-02-20T15:18:35.367 回答
0

如果使用GNU bash,请使用内置列表运算符&&||执行此操作。

diff -ibw abc.txt cba.txt &>/dev/null && echo "Files Match" || echo "Files do not match"

来自man bash

&&AND 和 OR 列表分别是由和││控制运算符分隔的多个管道之一的序列。AND 和 OR 列表以左结合性执行。AND 列表具有以下形式

          command1 && command2

command2当且仅当command1返回退出状态为零时才执行。

   An OR list has the form

          command1 ││ command2

command2当且仅当command1返回非零退出状态时才执行。AND 和 OR 列表的返回状态是列表中执行的最后一个命令的退出状态。

于 2018-02-20T17:12:43.590 回答