我正在尝试计算欧拉数,但在显示结果时遇到了问题。这是我的结果:
#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
管道的输出。该$(...)
结构称为命令替换,通常在必须重用命令的输出来代替命令本身时使用。