2015-01-29 6 views
1

원격 홈에서 bash를 올바르게 실행할 수 있습니다. TCL을 원격 호스트에 설치했지만 TCL을 실행할 수 없습니다. 이 스크립트를 실행하면 오류가 발생하지 않습니다. 당신의 [open $filename "w"]가 (다른 곳에서와 유사한 변경) open "w"]으로 변경됩니다, 그래서 당신은 당신의 외부 스크립트에 내 보낸 filename 변수가없는 한Bash 스크립트가 tclsh를 실행하지 않습니다

#!/bin/bash 
ssh [email protected] << EOF 
echo "Connected"; 
echo "CD TO ~"; 
cd ~; 
echo "Create text file"; 

script=' 
     set data "This is some test data.\n" 
     set filename "test.txt" 
     set fileId [open $filename "w"] 
     puts -nonewline $fileId $data 
     close $fileId 
exit 0' 

tclsh << HERE 
$script 
echo "Exit"; 

exit 
EOF 
+1

btw 또한 '여기'가 없습니다. 아마도 그것은'echo "Exit"앞에 있어야 할 것입니다. 여러분이 heredoc을 herestring에 해당하는 POSIX-sh로 사용하고 있기 때문에 인용하지 않으려 고하는 것입니다. –

+0

Thanks @CharlesDuffy 이제 모든 것이 잘되고 있습니다. D – Ryahn

답변

5

Heredocs는 기본적으로 그 안에서 변수를 확장합니다. 그 확장이 일어나기를 원하지 않는다면, 당신의 sigil을 인용하십시오 :

ssh [email protected] <<'EOF' 

script='content' 

# intentionally not quoting this sigil, since in this case expansion is desired 
tclsh <<HERE 
$script 
HERE 

EOF 
+0

그리고 항상 가장 단순한 것 – Ryahn

+0

나는이 시점에서 사물에 대해 별도의 파일을 사용하는 것이 더 쉽다고 생각합니다. 모두 하나로 모든 것이 잘되어 있지만 혼란은 필연적으로 오래 걸립니다 ... –

관련 문제