我有 15 个每天定期编辑的文本文件,我想使用 UNIX diff 命令但在一个简单的 bash shell 脚本中(而不是单独使用命令)来比较所有这些文件的内容及其备份副本一行一行)在安装了最新版本 BASH 的 MacOSX 终端上。
到目前为止,我已经创建了这个脚本:
#!/opt/local/bin/bash
FILE1_L="/Path/to/file/Test1.txt"
FILE1_R="/Path/to/file/Test1 copy.txt"
diff -y -W200 -s --supp "$FILE1_L" "$FILE1_R"
FILE2_L="/Path/to/file/Test2.txt"
FILE2_R="/Path/to/file/Test2 copy.txt"
diff -y -W200 -s --supp "$FILE2_L" "$FILE2_R"
# etc down to
FILE15_L="/Path/to/file/Test15.txt"
FILE15_R="/Path/to/file/Test15 copy.txt"
diff -y -W200 -s --supp "$FILE15_L" "$FILE15_R"
我想使用简单的 for 循环在变量中包含的文件名中间添加一个数字/索引,一个用于左文件,一个用于右文件,并且每次循环时只执行一个 diff 命令已循环。 这是伪代码;
FILE1_L=same as above
FILE1_R=same as above
FILE2_L=same as above
FILE2_R=same as above
# etc down to
FILE15_L=same as above
FILE15_R=same as above
for loop with i as the index
{
FILE_L="FILE"+$i+"_L"
FILE_R="FILE"+$i+"_R"
diff -y -W200 -s --supp "$FILE_L" "$FILE_R" > diff_output.txt
# and later on maybe ask if the user wants to view the differences or not, etc
}
问题:使用BASH脚本,如何将索引变量i的值添加到FILE_L和FILE_R内容的中间,如上面的伪代码所示? 例如,如果 i=8,则 FILE_L 将是字符串 FILE8_L
我不太熟悉 bash 的详细来龙去脉。
for file_l in '/Path/to/file/'*.txt; do
file_r="${file_l%%.txt}"
diff -y -W200 -s --supp "$file1_l" "$file1_r"
done