루프 내 변수에 값 할당

루프 내 변수에 값 할당

나는 이 코드를 가지고 있습니다 :

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
$

관련 정보