中かっこ拡張がスクリプトで機能しない

中かっこ拡張がスクリプトで機能しない
for i in {1..40}
do 
   echo $i
done

私は持っています

{1..40}

私は次のようなものが欲しい

1
2
3
and so on

iしたがって、コマンドのパラメータでその変数を使用できます。

ベストアンサー1

存在する強く打つ3.0以上(およびzshとksh93)は{1..40}1〜40(含む)に拡張されます。中POSIXシェルダッシュ(/bin/shUbuntuでは一般的です)と同じようには機能しません(私たちはこの問題を「bashism」と呼びます)。

GNUユーティリティを使用しているシステムでは、次のコマンドを使用してseqこれを実行できます。

for i in $(seq 1 40)
do
    echo $i
done

移植性を高めるには、ループ内で手動で増やす必要があります$iwhile

i=1
while [ $i -le 40 ]
do
    echo $i
    i=$((i+1))
done

このポータブルバージョンは外部コマンドがないため、少し高速です。

おすすめ記事