这里有一些额外的方式来做你要找的利弊注意事项。
以下仅适用于不包含换行符的文件名。它以锁步方式将文件配对。它使用额外的文件描述符从第一个列表中读取。如果im1_dir包含更多文件,则当im2_dir用完时,循环将停止。如果im2_dir包含更多文件,则file1对于所有不匹配的file2将为空。当然,如果它们包含相同数量的文件,则没有问题。
#!/bin/bash
im1_dir=(~/prev1/*.png)
im2_dir=(~/prev3/*.png)
exec 3<
while IFS=$'\n' read -r -u 3 file1; read -r file2
do
run_black "$file1" "$file2"
done <
exec 3
可以使行为是一致的,这样的循环,只有非空匹配的文件停止无论哪个名单不再由具有双符号代替分号像这样:
while IFS=$'\n' read -r -u 3 file1 && read -r file2
这版本使用for循环而不是while循环。当两个列表中的较短者耗尽时,这个停止。
#!/bin/bash
im1_dir=(~/prev1/*.png)
im2_dir=(~/prev3/*.png)
for ((i = 0; i < ${#im1_dir[@]} && i < ${#im2_dir[@]}; i++))
do
run_black "${im1_di