1

可能な値が別の変数から取得される for in ループを作成したいと思います。理解できない部分は、ブレース展開が必要な値を含める方法です。例えば:

TEXT="a b c d{a..c} e f"
for VAR in $TEXT; do echo $VAR; done

私が得るものは

a
b
c
d{a..c}
e
f

しかし、私が欲しいのは

a
b
c
da
db
dc
e
f

これを機能させる方法を知っている人はいますか?

どうもありがとうございました!

4

3 に答える 3

2

編集

には時間と場所がありevalますが、一般的なケースでは最も安全な方法ではありません。Bash で eval を避けるべき理由と、代わりに何を使用する必要があるかを参照してください。なんらかの理由で。


使用eval:

TEXT="a b c d{a..c} e f"
for VAR in $TEXT; do eval echo $VAR; done

出力:

a
b
c
da db dc
e
f

すべての要素をループしたい場合は、ループをネストする必要があります。

for VAR in $TEXT; do
  for VAR2 in $(eval echo $VAR); do
    echo $VAR2
  done
done

出力:

a
b
c
da
db
dc
e
f

TEXTまたは、各要素ではなくon で eval を使用します。

TEXT="$(eval echo "a b c d{a..c} e f")"
for VAR in $TEXT; do echo $VAR; done

出力:

a
b
c
da
db
dc
e
f
于 2016-03-01T12:43:28.563 に答える
0

なしeval、ただしコマンド置換あり:

$ text="$(echo a b c d{a..c} e f)"
$ echo "$text"
a b c da db dc e f

そして、トムの答えで述べたように、配列はおそらくここに行くより良い方法です。

于 2016-03-01T14:40:48.500 に答える