在 bash 中使用括号
Usage of parenthesis in bash
我看到这个 Stack Overflow 关于在 bash 中使用括号的问题。
很好的信息,但我对如何使用括号仍有一些疑问。例如下面的代码:
#!/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,它给了我以下信息。
$(( expression ))
The expression is treated as if it were within
double quotes, but a double quote inside the parentheses is not
treated specially. All tokens in the expression undergo parameter
expansion, command substitution, and quote removal. Arithmetic
substitutions can be nested.
我不太明白:(
但我确实明白我们不必在每个变量之前使用 $
并且变量将自动被替换。还有什么以及为什么我的脚本会抛出错误?
另外 a=$( expression )
是做什么的?
这个也像 $(( ))
一样工作吗?
请举例说明答案,以便我更好地理解。
注:我在cygwin中运行上面的脚本。
$(( d = a * b + c ))
计算后,剩下的是一个数字,因为这是第一个单词,shell 将尝试将其作为命令执行。毫不奇怪,没有名为 37
.
的命令
您可以忽略结果:
: $(( d = a * b + c ))
但最好简单地写下你的意思:
d=$(( a * b + c ))
我看到这个 Stack Overflow 关于在 bash 中使用括号的问题。
很好的信息,但我对如何使用括号仍有一些疑问。例如下面的代码:
#!/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,它给了我以下信息。
$(( expression ))
The expression is treated as if it were within double quotes, but a double quote inside the parentheses is not treated specially. All tokens in the expression undergo parameter expansion, command substitution, and quote removal. Arithmetic substitutions can be nested.
我不太明白:(
但我确实明白我们不必在每个变量之前使用 $
并且变量将自动被替换。还有什么以及为什么我的脚本会抛出错误?
另外 a=$( expression )
是做什么的?
这个也像 $(( ))
一样工作吗?
请举例说明答案,以便我更好地理解。
注:我在cygwin中运行上面的脚本。
$(( d = a * b + c ))
计算后,剩下的是一个数字,因为这是第一个单词,shell 将尝试将其作为命令执行。毫不奇怪,没有名为 37
.
您可以忽略结果:
: $(( d = a * b + c ))
但最好简单地写下你的意思:
d=$(( a * b + c ))