私はbashスクリプトの初心者です。 10の倍数の平均値を10から190までのすべての平均値を求める簡単なコードを書きました。 コード:コードが機能しないのはなぜですか?
#!/bin/bash
a=10
ans=0
while[ $a -le 190 ]
do
ans=`expr $a + $ans'
a=`expr $a + 10'
done
echo "$ans"
このプログラムで何が問題になっていますか?
私はbashスクリプトの初心者です。 10の倍数の平均値を10から190までのすべての平均値を求める簡単なコードを書きました。 コード:コードが機能しないのはなぜですか?
#!/bin/bash
a=10
ans=0
while[ $a -le 190 ]
do
ans=`expr $a + $ans'
a=`expr $a + 10'
done
echo "$ans"
このプログラムで何が問題になっていますか?
それは、このような閉じた形のソリューションを使用する方が効率的です:
lower=10
upper=190
echo $((($upper + $lower)/2))
あなたはあなたのコードの構文エラーを持って、代わりにこれを試してください - あなたが直面していた
#!/bin/bash
a=10
ans=0
while [ $a -le 190 ]
do
ans=`expr $a + $ans`
a=`expr $a + 10`
done
echo "$ans"
エラー -
を
- の後にスペースがありません。
- 'の代わりで`の ANS =` exprの$ A + $ ANS' の使用"代わりので` = `exprのする$ A + 10の
- 使用「
ので、あなたのコードの間違いのカップルを持っている、これはあなたの正しいバージョンである:
a=10
ans=0
while test $a -le 190
do
a=$(expr $a + 10)
ans=$(expr $a + $ans)
done
echo $ans
問題はあなたにもexpr
が動作するためにあなたが開始に括弧ですべてを置くために持って、それのうちdollar sign
、while
またはif
文などのループでtest
を使用する必要がありますということでした。エコー内の""
は、エコーがそれらをすべて同じものとして扱う限り、使用しません。
スクリプトの構文に問題があります。あなたが "expr"コマンドの代わりに "let"を使うと、コードを読みやすくすることができます。例:a = 10 + 1とする。ファイルを実行可能なパーミッションで保存するか、 "source"を使用して実行してください。
#!/bin/bash
a=10
ans=0
count=0
while [ $a -le 190 ]; do
ans=`expr $a + $ans`
a=`expr $a + 10`
count=`expr $count + 1`
done
echo "avg: $((ans/count))"
基本的なエラーについてはhttp://www.shellcheck.net/のコードを貼り付けてください。それらを訂正し、それでも問題がある場合は編集してください。また、[bashスクリプトで数値を追加するにはどうすればいいですか?](http://stackoverflow.com/a/6348941/1983854)にも読んでください。最後に、「働いていない」というのは役に立たない。何が効いていないのか?どのようなエラーがありますか? [ask]を読むことができます。 – fedorqui
ありがとうございます。問題を解決しました。 本当にばかな間違いでした。 :) – hfarwah
次に、何が間違っていたか、最終的には[自分自身の回答を書く](http://stackoverflow.com/help/self-answer)についてのフィードバックを提供するか、または提供された回答の1つを受け入れます溶液。 – fedorqui