Echo ${호스트 이름}; echo $(호스트 이름);

Echo ${호스트 이름}; echo $(호스트 이름);

다음의 차이점을 설명해 주시겠습니까?

echo ${hostname}; 그리고echo $(hostname);

echo ${hostname};- 아무것도 표시하지 않고 빈 줄만 표시됩니다. echo $(hostname);- /etc/hostname의 정보를 표시합니다.

Ubuntu 22.04.1 및 CentOS 7에서 테스트되었습니다.

답변1

${hostname}또는 $hostname로 알려진매개변수 확장, 쉘 변수의 값이 여기에 제공됩니다 hostname. 설정되지 않았을 수 있으므로 빈 문자열을 얻게 되며 확장명이 인용되지 않았기 때문에 토큰화 중에 제거됩니다. 그러나 물론 이를 정의할 수 있으며 Bash는 자동으로 HOSTNAME호스트 이름으로 대문자를 채울 것입니다.

예를 들어 참조하십시오.$VAR 대 ${VAR} 및 인용 여부

$ hostname=foo
$ echo "$hostname"
foo

$(hostname)~라고 불리는명령 대체, 여기에서는 명령을 실행 hostname하고 출력을 제공합니다.

$ hostname
ulpukka
$ foo=$(hostname)
$ echo "$foo"
ulpukka

단어 분리는 따옴표가 없는 매개변수 확장 및 명령 대체에 작동합니다.Bash에서 $(명령 대체) 내에서 인용그리고언제 큰따옴표가 필요합니까?

관련 정보