在bash中使用括号

时间:2015-11-29 12:28:56

标签: bash parentheses

我看到了关于在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中运行了上述脚本。

1 个答案:

答案 0 :(得分:4)

$(( d = a * b + c ))

在计算之后,剩下的是一个数字,并且因为它是第一个单词,所以shell将尝试执行它作为命令。毫不奇怪,没有名为37的命令。

您可以忽略结果:

: $(( d = a * b + c ))

但简单地写下你的意思更好:

d=$(( a * b + c ))