원격 호스트로 ssh를 시도하고 .zshrc
호스트의 파일에 환경 변수를 로드한 다음 해당 환경 변수를 사용하여 명령을 실행하려고 합니다.
이것은 지금까지 내 스크립트입니다.
#!/usr/bin/expect -f
spawn ssh hostname
send "echo $my_variable\n"
interact
내 원격 호스트의 파일에는 .zshrc
다음 내용이 포함되어 있습니다.
export my_variable=banana_tree
위 스크립트를 실행하면 다음과 같은 결과가 출력됩니다.
spawn ssh hostname
can't read "my_variable": no such variable
while executing
"send "echo $my_variable\n""
(file "/Users/me/myscript.sh" line 6)
예상한 변수가 스크립트를 실행하는 환경에 정의되어 있지 않기 때문에 찾을 수 없다는 오류 메시지를 알고 있습니다. 해결 방법은 스크립트를 실행하는 변수를 정의하는 것이지만 유지하는 것을 선호합니다. 가능하면 원격에서 호스트에 정의된 변수.
답변1
대본에서 달러 기호를 벗어나야 했기 때문에 다음과 같이 되었습니다.
#!/usr/bin/expect -f
spawn ssh hostname
send "echo \$my_variable\n"
interact
로드 중인 것처럼 보이지만 .zshrc
호스트에 환경 변수를 로드하려면 달러 기호를 이스케이프해야 하는 반면, 스크립트에서 환경 변수를 정의하려면 달러 기호를 이스케이프하지 않습니다.