ssh, heredoc 및 환경 변수

ssh, heredoc 및 환경 변수

(중요한 경우 RHEL 8.4입니다.)

스크립트의 5행과 7행에 있는 명령은 echo로컬 호스트에서 실행되지만 hostname6행과 8행의 명령은 예상대로 원격 호스트에서 실행됩니다.

5행과 7행이 localhost에서 실행되는 이유는 무엇입니까? 더 중요한 것은,원격 호스트에서 실행되도록 하려면 어떻게 해야 합니까?

편집 : 나원하지 않는다도착하다들어오는변하기 쉬운. 원격 서버에서 변수를 개별적으로 정의하고 사용하고 싶습니다.

 1 #!/bin/bash
 2 export foo=bar
 3 ssh -q ${1} <<EOF
 4     export foo=blarge
 5     echo $foo
 6     hostname
 7     echo $foo
 8     hostname
 9 EOF
10 hostname

답변1

인용된 EOF를 사용하십시오.

$ ssh -q localhost <<'EOF'
export foo=blarge
echo $foo
EOF
blarge

사용 중인 쉘을 지정하지 않았지만 man bash 예를 들어 다음과 같습니다.

단어의 일부가 인용된 경우 구분 기호는 단어에서 인용문을 제거한 결과이며 문서의 줄은 여기에서 확장되지 않습니다.

관련 정보