나는 Bash 매뉴얼에서 이것을 읽고 놀랐습니다.산술 평가:
표현식 내에서 쉘 변수는 매개변수 확장 구문을 사용하지 않고도 이름으로 참조될 수도 있습니다.
나는 그것을 시도했고 실제로 var
동작은 다음과 같습니다 $var
.
❯ var=9
❯ echo $(( var + 5 ))
14
❯ (( var < 10 )) && echo 'single digits!'
single digits!
이것은 나쁜 습관으로 간주됩니까? 다른 쉘로 이식 가능합니까, 아니면 Bashism입니까?
답변1
$
산술 평가에 변수를 사용하지 않는 것은 나쁜 습관으로 간주되지 않습니다. 이식성 측면에서 ((…))
일반적으로 POSIX가 아니므로 대시와 같은 셸에서는 작동하지 않습니다. zsh와 ksh에서 작동합니다. 반면에 $((…))
POSIX에 있으며 모든 최신 sh 스타일 쉘에서 작동합니다.