使用bash脚本比较两个文件

时间:2013-07-25 06:43:10

标签: linux bash

我需要在linux bash中使用以下代码:

第1步:

运行命令并创建file1 运行命令并创建file2

比较file1和2

如果有任何差异转到第1步(继续尝试4次,如果没有成功,则中止程序) 否则继续。

现在我坚持这种比较,然后是循环和迭代。我知道diff和comm可以使用,但无法理解,如何我不想要任何特定的输出,然后如何管理这4次迭代。有人可以告诉我吗?

2 个答案:

答案 0 :(得分:1)

您可以跳过临时文件。这是一个版本,它为您提供了一个功能,用于将“尝试”概念收集到一个成功或无法编写更多代码:

#!/bin/bash

cmd_1="$1"
cmd_2="$2"

iterate () {
    for attempt in {1..4} ; do
        echo attempt $attempt
        if diff  <($cmd_1) <($cmd_2) >/dev/null ; then
            return   # still has the diff's successful exit status
        fi
    done
    false
}

if iterate ; then
    echo successful
else
    echo aborted ; false  # propagate failure status out of script
fi

#---eof

我将其填入./foo并使其可执行并经过测试:

$ ./foo 'cat foo' 'cat foo' 
attempt 1
successful
$ ./foo 'cat foo' 'cat /dev/null' 
attempt 1
attempt 2
attempt 3
attempt 4
aborted
$ 

答案 1 :(得分:0)

if cmp -s "$a" "$b"; then
    echo Same
else
    echo Differ
fi

或者你可以使用diff    如果差异“$ file_a”“$ file_b”&amp;&gt; / dev / null;然后     echo“文件是一样的”    其他     echo“文件不同”    网络