可能な値が別の変数から取得される 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
これを機能させる方法を知っている人はいますか?
どうもありがとうございました!
可能な値が別の変数から取得される 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
これを機能させる方法を知っている人はいますか?
どうもありがとうございました!
編集
には時間と場所があり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
なしeval
、ただしコマンド置換あり:
$ text="$(echo a b c d{a..c} e f)"
$ echo "$text"
a b c da db dc e f
そして、トムの答えで述べたように、配列はおそらくここに行くより良い方法です。