什么时候在bash中的算术语句之前需要一个美元符号?

时间:2014-12-11 19:59:26

标签: bash

我正试图绕过bash,但我正在努力争取一些核心基础。

我可以看到算术语句由双括号

定义
((5-3))

但如果我在echo尝试shift或我们,我会收到错误

echo ((5-3))
-bash: syntax error near unexpected token `('

在示例中,它显示在前面加上美元符号将使其正常工作

echo $((5-3))

为什么?语法看起来好像我将算术应用于空白变量然后应用到echo函数。为什么我不能将算术结果传递给echo函数?我怎么知道何时在其他实例中用美元符号作为算术语句的前缀。

请原谅我的无知。我已经习惯了网络开发语言,而Bash就是如此不同。

3 个答案:

答案 0 :(得分:3)

((...))是算术表达式

$((...))是算术扩展

不同之处在于表达式本身就是一个单位,但扩展只会被一个值替换。

这与。之间的区别是一样的。

$ echo foo
foo

$ $(echo foo)
-bash: foo: command not found

答案 1 :(得分:1)

当您不仅需要计算而且还要返回它的值

时,需要这样做

答案 2 :(得分:1)

双括号用于告诉bash处理大括号内的内容是一个整数,'$'符号用于显示结果或算术中的结果整数