ユーザーが入力したフレーズをユーザーが入力した特定の回数だけ繰り返します。予想した誤った整数式が続き、それを修正する方法がわかりません。
#!/bin/sh
echo "What do you want to say?"
read phrase
echo "How many times?"
read num
while [ "num" -ge 0 ]
do
echo $phrase
num='expr num - 1'
done
答え1
$
にない限り、bashで変数を拡張するにはaを使用する必要があります(( ))
。リテラル文字列 "num" を数値 0 と比較します。次のいずれかのオプションを使用します。
while [ "$num" -ge 0 ] # POSIX
while (( num >= 0 )); # bash
答え2
いくつかの修正。
#!/bin/sh
echo "What do you want to say?"
read phrase
echo "How many times?"
read num
while [ $num -gt 0 ];
do
echo $phrase
let num='num - 1'
done
はい
$ ./cmd.bash
What do you want to say?
hi
How many times?
4
hi
hi
hi
hi
この表記法を使用すると、再計算を$num
より簡単で簡単に読み取ることができます。
次の行を変更してください。
let num='num - 1'
これで:
( num-- ))
変数表記法をいつ使用すべきか、使用しないことを混乱させることがあります$
。この変更は、ネイティブ以上の機能を使用する場合に適しています。bash
test
bash
sh
詳細
$num
ループ制御セクションで範囲チェックを実行するときは、変数型を使用する必要がありますwhile
。let
代わりに使用してくださいexpr
。- ループの境界には0つのステップが含まれており、必要なもの
-ge
より1つの結果が得られます。
はい
while
ループバインディングチェックを使用すると、-gt
次の結果が得られます。
$ ./cmd.bash
What do you want to say?
hi
How many times?
2
hi
1
hi
0
あなたがあなたのものを使っているなら、-ge
あなたは次のような行動をするでしょう:
$ ./cmd.bash
What do you want to say?
hi
How many times?
2
hi
1
hi
0
hi
-1