オイラーのしびれを計算しようとしています。しかし、結果を表示しようとして問題が発生しています。これは私が持っているものです:
#Using a switch an case
"Euler's Number")
szAnswer=$(zenity --info --text "Enter a number")
result = "(1+1/$szAnswer)^$szAnswer" | bc -l
zenity --info --text "Euler's Numb: $result"
数値とすべてを入力することはできますが、出力結果を取得する場合、空白のままです。どんな助けでも歓迎します。
問題はresult = "(1+1/$szAnswer)^$szAnswer" | bc -l
行です。それは読む:
=
_および"(1+1/$szAnswer)^$szAnswer"
を使用してコマンドresult
を実行しますstdout
コマンドのresult
ストリームをbc
コマンドのstdin
ストリームに接続しますこの場合、result
がなぜコマンドなのか疑問に思われるでしょう。これは、シェルスクリプトでの変数の割り当てが、変数名と割り当てられた値を区切るスペースなしで行われるためです。 _bc -l
_コマンドのstdin
に"(1+1/$szAnswer)^$szAnswer"
を送信するため、stdout
に書き込むことができるものが必要です
やるべきことは
_result=$( echo "(1+1/${szAnswer})^${szAnswer}" | bc -l )`
_
これで、result
変数にecho "(1+1/${szAnswer})^${szAnswer}" | bc -l
パイプラインの出力が割り当てられました。 $(...)
構造はコマンド置換と呼ばれ、通常、コマンド自体の代わりにコマンドの出力を再利用する必要がある場合に使用されます。