(중요한 경우 RHEL 8.4입니다.)
스크립트의 5행과 7행에 있는 명령은 echo
로컬 호스트에서 실행되지만 hostname
6행과 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
예를 들어 다음과 같습니다.
단어의 일부가 인용된 경우 구분 기호는 단어에서 인용문을 제거한 결과이며 문서의 줄은 여기에서 확장되지 않습니다.