명령 대체 및 공백

명령 대체 및 공백

계산기로 작동하는 이유:

[root@qabun02 ~]# echo $(( 5+2  ))
7

하지만 그렇지 않나요?

[root@qabun02 ~]# echo $( (5+2) )
-bash: 5+2: command not found

내가 볼 수 있는 유일한 차이점은 괄호 사이에 공백이 없다는 것입니다.

반품:

[root@qabun02 ~]# echo $(who) root pts/0 2015-01-28 09:53 (10.40.0.115) [root@qabun02 ~]# echo $((who)) 0

((명령 대체는 및 에 어떻게 응답합니까 ( (?

답변1

문제는 $(명령 대체가 활성화되어 있지만 $((산술 확장이 활성화되어 있다는 것입니다.

$( (5+2) )명령입니다. 즉, 서브쉘의 명령입니다 (5+2). 5+2그러나 이것은 유효한 명령이 아닙니다.

$((who))who정의되지 않은 변수 값(예: 0)으로 대체됩니다.

답변2

배쉬에서:

$(...)하위 명령 대체를 나타냅니다("..."와 유사).

$((...))산술 평가 대체를 나타냅니다.

${...}변수/매개변수 대체를 나타냅니다.

는 문자의 원자 시퀀스로 처리 되어야 하며 $((( 로 끝나야 함 ) , 또는 ))와 전혀 동일하지 않습니다 .$ (($( ($ ( (

OBS: a는 $바로 앞에 아무것도 없는 경우 (에 해당하며 블록 내에서 산술 평가의 우선순위를 지정하는 데 사용할 수 (있습니다 ( .$((...))$(( (3+4)*5 ))$(( 3+4*5 ))

관련 정보