可変反復回数を使用してforループを作成するには?

可変反復回数を使用してforループを作成するには?

ユーザーが最初に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

関連情報