変数を使用した中括弧拡張が期待どおりに機能しないのはなぜですか? [コピー]

変数を使用した中括弧拡張が期待どおりに機能しないのはなぜですか? [コピー]

次のように括弧内に変数(x = 100)を設定したいと思います。

x=100    
for i in {0.."$x"..50} ;do
echo $i 
done

iの期待される出力は次のようになります。

0
50
100

私は出力を得るが、

{0..100..50}

ベストアンサー1

これはbash拡張順序はbash変数の拡張は、シェルが中括弧を拡張するよりも後で発生します{0..50}。したがって、中括弧の拡張中、シェルはその構成を{0..$x..50}無効な拡張構成として扱います。

代替が必要です。最善はfor算術コンテキストのループです。bash

for ((i=0; i<=100; i+=50)); do 
    printf "%d\n" "$i"
done

おすすめ記事