在bash shell中读取嵌套循环中的文件

时间:2016-09-06 00:18:20

标签: bash shell for-loop

我有一组文件。

file1, file2, file3

我需要使用嵌套for循环在bash脚本中成对读取它们。

file1, file2
file1, file3
file2, file3

我该怎么做?

1 个答案:

答案 0 :(得分:0)

要浏览目录中两个文件的所有组合:

flist=(*)
for i in "${!flist[@]}"
do
   file1="${flist[i]}"
   for file2 in "${flist[@]:i+1}"
   do
      echo "Files: $file1 $file2"
   done
done

flist=(*)创建一个包含当前目录中所有文件名称的数组。

for i in "${!flist[@]}"; do在数组flist的索引上开始循环。

file1="${flist[i]}"flast中第i个文件的名称分配给变量file1

for file2 in "${flist[@]:i+1}"; doflist开始第i + 1个文件的所有文件名开始循环。

实施例

考虑一个包含三个文件的目录:

$ ls
file1  file2  file3

现在,让我们运行命令:

$ flist=(*); for i in "${!flist[@]}"; do file1="${flist[i]}"; for file2 in "${flist[@]:i+1}"; do echo "Files: $file1 $file2"; done; done
Files: file1 file2
Files: file1 file3
Files: file2 file3