쉘 산술: $를 앞에 두지 않고 변수 참조

쉘 산술: $를 앞에 두지 않고 변수 참조

나는 Bash 매뉴얼에서 이것을 읽고 놀랐습니다.산술 평가:

표현식 내에서 쉘 변수는 매개변수 확장 구문을 사용하지 않고도 이름으로 참조될 수도 있습니다.

나는 그것을 시도했고 실제로 var동작은 다음과 같습니다 $var.

❯ var=9
❯ echo $(( var + 5 ))
14
❯ (( var < 10 )) && echo 'single digits!'
single digits!

이것은 나쁜 습관으로 간주됩니까? 다른 쉘로 이식 가능합니까, 아니면 Bashism입니까?

답변1

$산술 평가에 변수를 사용하지 않는 것은 나쁜 습관으로 간주되지 않습니다. 이식성 측면에서 ((…))일반적으로 POSIX가 아니므로 대시와 같은 셸에서는 작동하지 않습니다. zsh와 ksh에서 작동합니다. 반면에 $((…))POSIX에 있으며 모든 최신 sh 스타일 쉘에서 작동합니다.

관련 정보