-1

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

步骤1:

运行命令并创建文件 1 运行命令并创建文件 2

比较文件1和2

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

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

4

2 回答 2

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
$ 
于 2013-07-25T08:18:27.417 回答
0
if cmp -s "$a" "$b"; then
    echo Same
else
    echo Differ
fi

或者你可以使用 diff if diff "$file_a" "$file_b" &> /dev/null ;然后回显“文件相同”否则回显“文件不同”fi

于 2013-07-25T06:47:02.633 回答