如何编写bash脚本(做差异),将文件作为输入,其中包含需要以1:1方式进行比较的文件名列表。 输入文件的内容如下所示:
file1.a file1.b
file2.a file2.b
file3.a file3.b
file(n).a file(n).b
因此diff应该只执行以下循环:
diff file1.a file1.b
diff file2.a file2.b
diff file3.a file3.b
我将使用位置参数输入文件,并使用awk
和sed
来获取相应的名称。但我不确定如何在文件结束之前将其作为循环。
答案 0 :(得分:1)
使用GNU bash:
#!/bin/bash
while read -r f1 f2; do
diff "$f1" "$f2"
done < "$1"
答案 1 :(得分:1)
您可以使用xargs在一行中完成此操作(使用difflist.txt
作为输入文件):
xargs -n2 diff < difflist.txt
xargs
构建一个命令行,从管道获取参数(这里由于-n2
正好2)并使用它们执行diff。