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
繰り返すのと同じ数の要素に分割します。