$() 및 `` [중복]의 다양한 동작

$() 및 `` [중복]의 다양한 동작
% PATH="MYPATH"
% VAR="PATH"

% echo $(eval echo \$$VAR)
MYPATH

% echo `eval echo \$$VAR`
5707VAR
 ^^
This is the process number.

나는 그 둘이 완전히 똑같다고 생각하지만, 회피 행동 등 분명히 몇 가지 차이점이 있다. 차이점이 뭐야?

답변1

더 잘 표현할 수 없기 때문에 BASH 참조 매뉴얼의 텍스트를 재현하겠습니다.

Bash는 명령을 실행하고 명령 대체를 명령의 표준 출력으로 바꾸고 후행 줄 바꿈을 제거하여 확장을 수행합니다. 포함된 개행 문자는 제거되지 않지만 단어 분리 중에 제거될 수 있습니다. 명령 대체 $(cat file)은 동일하지만 더 빠른 $(< file)로 대체될 수 있습니다.

이전 스타일의 백틱 대체 형식을 사용하는 경우 백슬래시는 "$", "`" 또는 "\"가 뒤에 오지 않는 한 문자 그대로의 의미를 유지합니다. 선행 백슬래시가 없는 첫 번째 백틱은 명령 대체를 종료합니다. $(command) 형식을 사용할 때 대괄호 사이의 모든 문자는 명령을 구성합니다. 단일 문자는 특별히 처리되지 않습니다.

원천:Bash 참조 매뉴얼, 명령 대체

관련 정보