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

在bash中,什么时候在算术语句之前需要美元符号?,bash,Bash,我正试图了解bash,但在一些核心基础上挣扎 我可以看到算术语句是由双括号定义的 ((5-3)) 但是如果我尝试回显,或者在shift中使用它,我会得到一个错误 echo ((5-3)) -bash: syntax error near unexpected token `(' 在示例中,它显示在其前面加上美元符号将使其工作 echo $((5-3)) 为什么呢?语法看起来好像我将算术应用于一个空变量,然后应用于echo函数。为什么我不能将算术结果传递到echo函数中?在其他情况下,如何知

我正试图了解bash,但在一些核心基础上挣扎

我可以看到算术语句是由双括号定义的

((5-3))
但是如果我尝试
回显
,或者在
shift
中使用它,我会得到一个错误

echo ((5-3))
-bash: syntax error near unexpected token `('
在示例中,它显示在其前面加上美元符号将使其工作

echo $((5-3))
为什么呢?语法看起来好像我将算术应用于一个空变量,然后应用于
echo
函数。为什么我不能将算术结果传递到
echo
函数中?在其他情况下,如何知道何时在算术语句前面加上美元符号


请原谅我的无知。我非常习惯于web开发语言,而Bash则完全不同。

当您不仅需要计算而且还需要返回它的值时,就需要这样做。

双大括号用于告诉Bash,大括号内的内容是一个整数,而“$”符号用于显示结果或来自算术表达式((…)是一种算术表达式

$(…)
是一种算术扩展

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

这与两者的区别是一样的

$ echo foo
foo


是的,BASH确实不同于web开发语言<代码>$(…)称为命令替换。一定要读一些BASH脚本教程。我会用不同的措辞:
(…)
实际上是它自己的命令<代码>$(…)是命令的*部分。如果您使用$((5-3))作为命令,它将计算结果(2),然后尝试将其作为命令执行(除非您碰巧有一个名为“2”的命令,否则将出现错误)。
$ $(echo foo)
-bash: foo: command not found