我需要在linux bash中使用以下代码:
第1步:
运行命令并创建file1 运行命令并创建file2
比较file1和2
如果有任何差异转到第1步(继续尝试4次,如果没有成功,则中止程序) 否则继续。
现在我坚持这种比较,然后是循环和迭代。我知道diff和comm可以使用,但无法理解,如何我不想要任何特定的输出,然后如何管理这4次迭代。有人可以告诉我吗?
答案 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“文件不同” 网络