![루프 내 변수에 값 할당](https://linux55.com/image/97396/%EB%A3%A8%ED%94%84%20%EB%82%B4%20%EB%B3%80%EC%88%98%EC%97%90%20%EA%B0%92%20%ED%95%A0%EB%8B%B9.png)
나는 이 코드를 가지고 있습니다 :
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
$