2017-12-28 75 views
1

ユーザが円周を入力した場合、円の面積を計算する必要があります。 これは私が持っているものですが、働いていない:bashの変数で複数の数値を分割する

let radius=$circumference/(2*3.1415) 

let area=3.1415*$radius*$radius 
+0

'bash'は、浮動小数点演算を行うことはできません。この[回答](https://stackoverflow.com/questions/12722095/how-do-i-use-floating-point-division-in-bash)を確認してください。 – PesaThe

+1

なぜπで除算してすぐにπで乗算するのですか?円の面積は円周の半分の半径です(ちょうど三角形のように見てください、それは同じ公式です)。 –

答えて

2

をコメントが指摘したように、bashが山車を行うことはありません。単純なecho+bcソリューションを試してみますが、awkなども使用できます。

radius=$(echo $circumference/\(2*3.1415\) | bc -l) 

area=$(echo 3.1415*$radius*$radius | bc -l) 

ないエレガントまたは特にポータブルが、それは動作します。

編集:私はtest.shファイル作成:

#!/bin/bash 

circumference=4 

radius=$(echo $circumference/\(2*3.1415\) | bc -l) 

area=$(echo 3.1415*$radius*$radius | bc -l) 

echo $radius $area 

を、私は端末にbash test.shを行うときに私が手:

.63663854846410950183 1.27327709692821900365 
+2

'\' cmd \ ''の代わりに '$(cmd)'を使う方が良いです、この[Bash FAQ#82](http://mywiki.wooledge.org/BashFAQ/082)をチェックしてください。そしてちょうどニックピックだと、 'echo'の代わりにリダイレクトを使うこともできます:' bc -l <​​<< "3.1415 * $ radius * $ radius" '。 – PesaThe

+0

それを指摘してくれてありがとう! –

+0

私はスクリプトを実行するたびに文法エラーが発生する – BetaCrasher

関連する問題