쉘 산술에서 변수 이름을 보호하는 방법은 무엇입니까?

쉘 산술에서 변수 이름을 보호하는 방법은 무엇입니까?

변수는 중괄호로 보호할 수 있습니다.

Mynewvar=1
echo $Mynewvar
1
echo ${Mynewvar}
1

그러나 쉘 내에서 산술 연산을 수행할 때 더 이상 보호할 수 없습니다.

Mynewvar=1
echo $((Mynewvar+9))
10
echo $(({Mynewvar}+9))
bash: {Mynewvar}+9: syntax error: operand expected (error token is "{Mynewvar}+9")

쉘 연산에 있을 때 변수 이름을 둘러싸는 올바른 방법은 무엇입니까?

답변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

관련 정보