bashのforループで入力パラメータを整数値に変換するには? [コピー]

bashのforループで入力パラメータを整数値に変換するには? [コピー]

for私のbashスクリプトでループの入力変数として数値を使用しようとしていますが、次のようにスクリプトを実行します。

./script.sh InputFolder/ Number_of_iterations

Number_of_iterationsスクリプトは指定されたフォルダ内で実行し、変数が設定された回数に応じてforループを実行する必要があります。しかし、どういうわけか変数を整数に設定することはできません。

以下はスクリプト内のループの例です。

for i in {1..$(($2))}
do
 echo "Welcome $i times"
done

$(($...))二重括弧オプションと二重引用符を試しましたが、引き続き"..."表示される結果は次のとおりです。

Welcome {1..5} times

これは私にこれが整数ではないと思います。入力パラメータをスクリプトに整数として読んでくれてありがとう。

ベストアンサー1

これは2つの方法で行うことができます。

ksh93互換シェル(ksh93、zsh、bash)を使用してください。

for (( i=1;i<=$2;i++ ))
do
 echo "Welcome $i times"
done

ここでは、i を 1 に設定し、$2 以下になるまで増やし、次のように出力します。

Welcome 1 times
Welcome 2 times

GNUシステムでPOSIXシェルを使用する:

for i in $(seq "$2")
do
 echo "Welcome $i times"
done

このseqコマンド(GNU固有)は、$ 2で指定された数字を1から$ 2まで別々の行に印刷します。コマンド置換は、変更されていない場合$IFS(デフォルトでは行区切り文字を含む)をfor繰り返すのと同じ数の要素に分割します。

おすすめ記事