循环访问列表中的特定文件集

循环访问列表中的特定文件集

我有一个文件夹,其中包含按以下顺序排列的许多文件:

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/A1A3。不知道为什么你会得到这个输出。您可以将前缀附加到数组的每个元素,
而不是使用,如下所示: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

相关内容