![循环访问列表中的特定文件集](https://linux22.com/image/213268/%E5%BE%AA%E7%8E%AF%E8%AE%BF%E9%97%AE%E5%88%97%E8%A1%A8%E4%B8%AD%E7%9A%84%E7%89%B9%E5%AE%9A%E6%96%87%E4%BB%B6%E9%9B%86.png)
我有一个文件夹,其中包含按以下顺序排列的许多文件:
A1.txt A2.txt A3.txt A4.txt
我不希望我的循环遍历所有这些,而只遍历列表中的那些:
list=("A1" "A3")
for fn in path/${list[@]};
do
echo "$fn"
done
当我这样做时,而不是得到:
path/A1
path/A2
我得到:
A1
A1
之前没有完整的路径..有人可以帮忙吗?
最好的,
视音频
答案1
正如@steeldriver所说,你应该得到path/A1
和A3
。不知道为什么你会得到这个输出。您可以将前缀附加到数组的每个元素,
而不是使用,如下所示:path/${list[@]};
${list[@]/#/path/}
所以你的 for 将变成:
for fn in "${list[@]/#/path/}";
do
echo "$fn"
done
答案2
数组扩展不能以这种方式工作。
您只需更改介绍该path/
部件的位置即可。
list=("A1" "A3")
for fn in "${list[@]}" ; do
echo "path/$fn"
done