我在 linux bash 中需要以下代码:
步骤1:
运行命令并创建文件 1 运行命令并创建文件 2
比较文件1和2
如果有任何差异,请转到步骤 1(继续尝试 4 次,如果不成功,则中止程序)否则继续。
现在我坚持这个比较,然后是 if 循环和迭代。我知道 diff 和 comm 可以使用但无法理解,因为我不想要任何特定的输出,然后如何管理这 4 次迭代。谁能告诉我?
您可以跳过临时文件。这是一个版本,它为您提供了一个函数,用于将“尝试”概念收集到一个单一的成功或失败中编写更多代码:
#!/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
$
if cmp -s "$a" "$b"; then
echo Same
else
echo Differ
fi
或者你可以使用 diff if diff "$file_a" "$file_b" &> /dev/null ;然后回显“文件相同”否则回显“文件不同”fi