왜 출력이 다른가요?
echo $( (( 5+5 )) )
echo $((( 5+5 )))
10
답변1
bash
활성화된 상태에서 명령을 실행합니다 set -x
.
$ set -x
$ echo $( (( 5+5 )) )
++ (( 5+5 ))
+ echo
$ echo $((( 5+5 )))
+ echo 10
10
$ echo $(( ( 5+5 ) ))
+ echo 10
10
보시다시피 $(...)
첫 번째 명령의 명령은 명령 대체로 처리됩니다. 이 명령은 실행 명령을 대체합니다 ((5+5))
. 이는 출력이 없는 산술 평가이므로 echo
어떠한 인수도 사용하지 않고 개행 문자만 사용합니다.
다른 경우(그리고 제가 추가한 추가 사례)는 $((...))
산술 확장으로 처리됩니다. 이 계산의 값은 (5+5)
해당 계산의 결과로 대체됩니다.
bash
혼란을 피하기 위해 위의 마지막 명령에서 보여준 것처럼 파서가 사용하려는 구문 그룹화 유형을 확인할 수 있도록 공백을 사용하는 것이 좋습니다 .