![如何用 zenity 显示一个值?](https://linux22.com/image/1165639/%E5%A6%82%E4%BD%95%E7%94%A8%20zenity%20%E6%98%BE%E7%A4%BA%E4%B8%80%E4%B8%AA%E5%80%BC%EF%BC%9F.png)
我正在尝试计算欧拉数,但在显示结果时遇到了问题。这是我的结果:
#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
管道的输出。该$(...)
结构称为命令替换,通常在必须重用命令的输出来代替命令本身时使用。