Bash 予測整数式

Bash 予測整数式

ユーザーが入力したフレーズをユーザーが入力した特定の回数だけ繰り返します。予想した誤った整数式が続き、それを修正する方法がわかりません。

#!/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-- ))

変数表記法をいつ使用すべきか、使用しないことを混乱させることがあります$。この変更は、ネイティブ以上の機能を使用する場合に適しています。bashtestbashsh

詳細

  1. $numループ制御セクションで範囲チェックを実行するときは、変数型を使用する必要がありますwhile
  2. let代わりに使用してくださいexpr
  3. ループの境界には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

関連情報