2017-04-26 7 views
1

したがって、whileループの例を参照して、スクリプトをまとめて問題を抱えています。私が推測しなければならないのは、私はbc関数の算術部分でそれを言うだろう。整数を使用するBashループの問題

私は千を打ち、それが何回走ったかを数えるまでループを走らせたい。私はまだスクリプトを数え切っているわけではありません。まだ実行するためにはまだ試みています(はい、私はawkがもっと簡単かもしれません)。

#!/bin/bash 
total=120 #this will be a variable that is read in from a menu but 120 is ok for now 
while [ $total -lt 1000000 ] 
do 
echo $total 
total=$(bc<<<"scale=2;$total + $total * .1") #I don't know if I have to use "let" before total but it did not make a difference. 
done. 

が、私は「合計」が、コマンドの構造は、私が見つけることができるすべての例に合うように思われるで始まる行でエラーを取得しています:

は、これは私がこれまで持っているものです。何がありますか?

+0

で始まる2行があります。 "total"ですが、3行目ではWhileで始まるエラーが出ると思いますが、エラーは 'While:command not found'(キーワード" while "は大文字ではありません)と期待します。それが修正されると、整数ではない「1,000,000」のエラーが予想されます。 –

+0

プロンプトでこれを実行すると、うまくいきますが、ループで...合計ではありません。 total = $(bc <<< "scale = 2; $ total + $ total * .1"); echo $ total - 出力は132.0 – Grunt

答えて

3

bcも比較のために使用してください。

限り、あなたは整数を扱っている、あなたは bcのような外部コマンドを必要とせずに、算術式 ((...))であなたのループを書くことができるよう
#!/usr/bin/env bash 

total=120 
while [ "$(bc <<< "$total < 1000000")" == 1 ] 
do 
    echo $total 
    total=$(bc <<< "scale=2;$total + $total * .1") 
done 
+1

ありがとうございます!私は数年後に助けてくれる人になることを楽しみにしています。 – Grunt

0

#!/bin/bash 
total=120 
while ((total < 1000000)); do 
    echo $total 
    ((total = total + total/10)) 
done