我看到了关于在bash中使用括号的Stack Overflow问题。
很棒的信息,但我仍然对如何使用括号有一些疑问。例如下面的代码:
#!/bin/bash
a=5
b=6
c=7
$(( d = a * b + c ))
echo "d : "$d
给了我输出:
./parantheses: line 5: 37: command not found
d : 37
我对$(( ))
的研究引导我进入site,这给了我以下信息。
$((表达式))
该表达式被视为在其中 双引号,但括号内的双引号不是 特别待遇。表达式中的所有标记都经过参数 扩展,命令替换和报价删除。算术 替换可以嵌套。
我没有得到它:(
但我确实理解我们不必在每个变量之前使用$
,并且变量将自动被替换。还有什么是它以及为什么我的脚本会抛出错误?
a=$( expression )
还做什么?
这个是否也像$(( ))
一样工作?
请用示例说明答案,以便我能更好地理解。
注意:我在cygwin中运行了上述脚本。
答案 0 :(得分:4)
$(( d = a * b + c ))
在计算之后,剩下的是一个数字,并且因为它是第一个单词,所以shell将尝试执行它作为命令。毫不奇怪,没有名为37
的命令。
您可以忽略结果:
: $(( d = a * b + c ))
但简单地写下你的意思更好:
d=$(( a * b + c ))