次の簡単な説明を得るために、1時間ほどグーグルで検索しました。どの時点で:
for i in $(eval echo "{01..30}"); do
echo $i
done
...Bash はブレースの '..' コンポーネントを評価しますか?
ありがとう、
ザック
次の簡単な説明を得るために、1時間ほどグーグルで検索しました。どの時点で:
for i in $(eval echo "{01..30}"); do
echo $i
done
...Bash はブレースの '..' コンポーネントを評価しますか?
ありがとう、
ザック
シェルスクリプトで使用set -x
して、自分で確認できます(Bashスクリプトのデバッグ)
set -x
for i in $(eval echo "{01..30}"); do
echo $i
done
そして、これは出力です:
++ eval echo '{01..30}'
+++ echo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
+ for i in '$(eval echo "{01..30}")'
+ echo 1
1
+ for i in '$(eval echo "{01..30}")'
+ echo 2
2
あなたの質問に答えるために、eval
コマンドには文字列 "echo" と文字列 "{01..30}" の 2 つの引数が表示されます。eval
これら 2 つの文字列から形成されたステートメントを が評価するときに、ブレース展開が発生します。