이 코드가 있습니다.
HOSTS="host1 host2"
For hostname in ${HOSTS} ;
do ssh -tt ${USERNAME}@${hostname} << EOF
HOSTSN="test"
echo ${HOSTSN}
exit
EOF
Done
변수가 HOSTSN
비어 있습니다. 이유를 알려주실 수 있나요?
답변1
HOSTSN은 평가 중이므로 비어 있습니다.
do ssh -tt ${USERNAME}@${hostname} << EOF
실행. 대신 사용하면 echo \${HOSTSN}
문제가 해결됩니다.
이 예를 고려하십시오. 여기에 'foo' 파일이 생성됩니다. 파일 생성시에는 내용이 실행되지 않습니다. 따라서 $NAME
아무것도 설정되지 않았습니다.
$ cat >foo <<EOF
NAME=Steve
echo Hello ${NAME}
EOF
$
$ cat foo
Hello
$
문자 를 도입하면 \
파일 생성 시 변수가 평가되지 않습니다.
$ cat >foo <<EOF
NAME=Steve
echo Hello \${NAME}
EOF
$
$ cat foo
Hello Steve
$