次の順序で多数のファイルを含むフォルダがあります。
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
sumを取得する必要があります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