如何在 BASH 变量中存储的文件名中间添加数字(或索引值)?

问题描述 投票:0回答:1

我有 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 的详细来龙去脉。

bash shell
1个回答
0
投票
for file_l in '/Path/to/file/'*.txt; do
    file_r="${file_l%%.txt}"
    diff -y -W200 -s --supp "$file1_l" "$file1_r"
done
© www.soinside.com 2019 - 2024. All rights reserved.