web-dev-qa-db-ja.com

ゼニティで値を表示する方法は?

オイラーのしびれを計算しようとしています。しかし、結果を表示しようとして問題が発生しています。これは私が持っているものです:

#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"

数値とすべてを入力することはできますが、出力結果を取得する場合、空白のままです。どんな助けでも歓迎します。

3
escobarveras

問題は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パイプラインの出力が割り当てられました。 $(...)構造はコマンド置換と呼ばれ、通常、コマンド自体の代わりにコマンドの出力を再利用する必要がある場合に使用されます。

3