如何用 zenity 显示一个值?

如何用 zenity 显示一个值?

我正在尝试计算欧拉数,但在显示结果时遇到了问题。这是我的结果:

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

我可以输入数字等,但输出结果时却一片空白。欢迎任何帮助。

答案1

问题出在result = "(1+1/$szAnswer)^$szAnswer" | bc -l一行上。内容如下:

  • result执行带参数的命令="(1+1/$szAnswer)^$szAnswer"
  • 将命令stdout的流连result接到bc命令的stdin

您可能想知道为什么result在这种情况下是命令。这是因为 shell 脚本中的变量赋值是在变量名和赋值之间没有空格的情况下进行的。您还想发送"(1+1/$szAnswer)^$szAnswer"stdin命令bc -l,因此您需要能够写入的东西stdout

应该做的是

result=$( echo "(1+1/${szAnswer})^${szAnswer}" | bc -l )`

现在,您已将result变量指定为echo "(1+1/${szAnswer})^${szAnswer}" | bc -l管道的输出。该$(...)结构称为命令替换,通常在必须重用命令的输出来代替命令本身时使用。

相关内容