ユーザーが最初にnを指定したときにループをn回繰り返す方法は?
私は(ユーザーが望む回数に応じて)特定の部分をn回繰り返す必要があるシェルスクリプトを作成しました。
これまで私のスクリプトは次のようになりました。
echo "how many times would you like to print Hello World?"
read num
for i in {1.."$num"}
do
echo "Hello World"
done
「num」を「5」などの数に変更すると、ループは機能しますが、ユーザーがループを繰り返す回数を指定できる必要があります。
答え1
あなたはそれを使用することができますseq
for i in $(seq 1 "$num")
あるいは、シェルはbashのようなCスタイルのループをサポートすることができます。
for ((i=0; i<$num; i++))
答え2
echo "how many times would you like to run your loop ?"
read max
i=0
while [ "$((i+=1))" -le "$max" ]
do
# whatever you want to do here
done
答え3
「算術評価」を使用してください(bashのみ):
read -p "how many times would you like to print Hello World? " max
i=0
while (( i++ < max ))
do
echo "$i, Hello World."
done
または、プログラムをより強力にしたい場合は、それを使用してください。
これにより、入力から数字のみが抽出されます。処理に時間がかかる可能性がある非常に大きな数字を除いて、他のすべての入力は使用前に削除されます。
while (( i++ < ${max//[^0-9]} ))
答え4
には別の方法があります{1.."$num"}
。 Bash拡張はforループに転送する前に評価する必要があります。次の方法で拡張構文を使用して機能させることができます。
for i in $(eval echo {1.."$num"});
do
echo $i;
done