变量可以用花括号保护。
Mynewvar=1
echo $Mynewvar
1
echo ${Mynewvar}
1
但是,在 shell 内算术时我无法再保护它们。
Mynewvar=1
echo $((Mynewvar+9))
10
echo $(({Mynewvar}+9))
bash: {Mynewvar}+9: syntax error: operand expected (error token is "{Mynewvar}+9")
当变量名在 shell 算术中时,包围变量名的正确方法是什么?
答案1
您想要在变量周围使用大括号来“保护”它的原因是,您可以将它与其他字符相邻使用,而不会将它们解释为变量名。例如:
$ n=1
$ echo $nx
# there is no variable named nx so this prints nothing however
$ echo "${n}x"
1x
任何有效的算术运算符都不会被解释为变量名,因此如果您只是做类似的事情,则不需要大括号$((n+1))
。
但是,如果您确实想将两个或多个变量连接在一起,则可以$
在算术扩展中使用扩展,例如:
$ n=1
$ x=1
$ echo $(($n$x+1))
12