다음의 차이점을 설명해 주시겠습니까?
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에서 $(명령 대체) 내에서 인용그리고언제 큰따옴표가 필요합니까?