我有一个关于 bash 语法的问题。bash 手册第 3.5 节中这样说:
扩展的顺序是:括号扩展;波浪号扩展、参数和变量扩展、算术扩展和命令替换(以从左到右的方式完成);单词拆分;和文件名扩展。
以下是链接:https://www.gnu.org/software/bash/manual/bash.html#Shell-Expansions
现在,这些命令按照我的预期执行:
$ echo 0 +{1..5}
0 +1 +2 +3 +4 +5
$ echo $((0 +1 +2 +3 +4 +5))
15
因此我认为这个命令应该产生与第二个命令相同的结果:
echo $((0 +{1..5}))
但是,我却收到这个错误:
bash: 0 +{1..5}: syntax error: operand expected (error token is "{1..5}")
这是为什么?难道它不应该先进行内部括号扩展,然后再像第二条命令那样计算算术扩展吗?
注意:我并没有想做什么特别的事情。我只是想了解 bash 的工作原理。