私は最小値pを計算するための簡単なbashスクリプトを書いています。これは、式C = 1-(p^n)にする必要があります。 CおよびPはユーザによって入力され、浮動小数点数である。 bcをループ中のbash while文で使用するには?
例えばC = 0.36およびp = 0.8は、その後、私のプログラムは、私のコードは、以下である1-(0.8^2)= 0.36
ので、Nの値に対して2を返す必要がある場合。注意:私はwhileループ条件文の中の多くの異なる場所に|bc
を入れました。私が試した最後の場所は、あなたが見ることができるように、2つの閉じ括弧の間でした。
operand expected (error token is ".36")
#!/bash/bin
echo "Enter I/O fraction time:"
read ioINPUT
echo "Enter expect CPU utilization:"
read uINPUT
n=1
function cpuUTIL {
x='scale=3; 1-$ioINPUT**$n'|bc
}
while [[ cpuUTIL -lt $uINPUT ]|bc]; do
n+=1
x='scale=3; 1-$ioINPUT**$n'|bc
done
echo $c
がどのように適切にbashスクリプトwhileループ条件文でBCを使用してください:
は、私は次のエラーを受け取りますか?
コードでいくつかの問題:1. '/ bashの/ bin'の語音転換。 2.変数名は、* $ ioINPUT *、* $ uINPUT *、* $ x *ではなく、 'c'、' p'、 'n'でなければなりません。 3.最後の行は 'echo $ c'ですが、* $ c *は決して割り当てられません。 4.整数のみの '-lt'比較を小数値でテストします。 5.関数 'cpuUTIL'は' -lt'でテストできません。 6.変数の代入は出力を生成しないので、 'bc'にパイプすることは効果がありません。 7. '] | bc]' typo。 8. whileのテストは、そのループに含まれるものの影響を受けず、開始されると永遠に実行される必要があります。 – agc
ヒントをありがとう。私が急いで疲れているので、1と3が発生しました。謝罪します。私が理解できない問題は2つだけです:なぜ私の変数の名前をc、p、nとするべきですか? – MoreFoam
これは単純なプログラムであり、モデル化された数式はそれらの変数を使用するので、プログラムがそれに従うのが簡単です。コードに長い名前が必要な場合は、それらの等式文字がモデリングしている属性の名前を使用する方がよいでしょう。 – agc