2

次の簡単な説明を得るために、1時間ほどグーグルで検索しました。どの時点で:

for i in $(eval echo "{01..30}"); do
    echo $i
done

...Bash はブレースの '..' コンポーネントを評価しますか?

ありがとう、

ザック

4

2 に答える 2

5

シェルスクリプトで使用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
于 2012-08-18T19:12:23.367 に答える
0

あなたの質問に答えるために、evalコマンドには文字列 "echo" と文字列 "{01..30}" の 2 つの引数が表示されます。evalこれら 2 つの文字列から形成されたステートメントを が評価するときに、ブレース展開が発生します。

于 2012-08-18T19:09:11.223 に答える