如何在shell算术中保护变量名?

如何在shell算术中保护变量名?

变量可以用花括号保护。

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

相关内容