1

リストを for ループのパラメーターとして使用したい。ただし二重引用符があると、リストはリストとして認識され、引用符がない場合、ワイルドカードはファイル名に評価されます。

A="a* b*"

for ex in "$A"; do
    echo "$ex";
done

for ex in $A; do
    echo "$ex";
done

最初のものは印刷されます:

a* b*

後者は次のように出力します。

a.txt
b.txt

私が欲しい:

a*
b*

どうすればこれを機能させることができますか?

4

2 に答える 2

5

set -fパス名の展開を無効にすることができます:

A="a* b*"

( set -f
  for ex in $A ; do
      echo "$ex"
  done
)
于 2012-11-07T13:41:40.737 に答える
4

配列を使用します。

A=("a*" "b*")
for ex in "${A[@]}"; do
    echo "$ex"
done
于 2012-11-07T13:46:27.903 に答える