我是shell和linux的初学者,这是一个shell算术问题,我不知道在终端中写什么来求解这三个方程。如果这似乎是一个糟糕的问题,我很抱歉,我尝试了echo命令和expr
,但它们都是错误的,并有许多不同的错误,如"(",接近…的语法错误,E0F,以及许多其他不幸的错误。我希望有人能为我提供正确的命令。我感谢你的任何帮助。我会记下我使用的错误的终端代码。
$ x=8
$ y=21
$ echo $((2*x**3 + sqrt(y/2))
bash: unexpected EOF while looking for matching ')'
bash: syntax error: unexpected end of file
$ echo $((2*x**3) + (sqrt(y/2)))
bash: command substitution: line 1: syntax error near unexpected token +'
bash: command substitution: line 1: `(2*x**3) + (sqrt(y/2))'
$ echo $((2*x**3)+(sqrt(y/2))
bash: unexpected EOF while looking for matching )'
bash: syntax error: unexpected end of file
$ echo $((2*x**3)+(sqrt(y/2)))
bash: command substitution: line 1: syntax error near unexpected token +(sqrt(y/2))'
bash: command substitution: line 1: `(2*x**3)+(sqrt(y/2))'
$ echo $((2x**3)+(sqrt(y / 2)))
bash: command substitution: line 1: syntax error near unexpected token +(sqrt(y / 2))'
bash: command substitution: line 1: (2x**3)+(sqrt(y / 2))'
shell不是进行浮点计算的合适工具。它只做整数运算,不提供像平方根这样的函数。
但是,bc实用程序同时执行这两项功能。它是一种任意精度的十进制算术语言和计算器。
$ bc
>>> scale=5
>>> sqrt(21)
4.58257
>>> scale=19
>>> sqrt(21)
4.5825756949558400065
>>> x=8
>>> y=21
>>> x+5
13
>>> x^2
64
>>> 2*x^2 - sqrt(y/2)
124.7596296507960698846
>>> Type Control-D to exit interactive bc.
$
请务必阅读带man bc
的bc的手册页面,以了解其所有功能和局限性。