Bash 脚本不是 运行 tclsh
Bash script not running tclsh
我能够 运行 bash 在远程家中正常。我在远程主机上安装了 TCL,但无法 运行 TCL。当我 运行 这个脚本时,我没有得到任何错误。
#!/bin/bash
ssh root@XXX.XXX.XXX.XXX << 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
Heredocs 默认在其中扩展变量,因此您的 [open $filename "w"]
更改为 open "w"]
(以及其他地方的类似更改),除非您在外部脚本中导出了 filename
变量。如果您不希望发生这种扩展,请引用您的印记:
ssh root@XXX.XXX.XXX.XXX <<'EOF'
script='content'
# intentionally not quoting this sigil, since in this case expansion is desired
tclsh <<HERE
$script
HERE
EOF
我能够 运行 bash 在远程家中正常。我在远程主机上安装了 TCL,但无法 运行 TCL。当我 运行 这个脚本时,我没有得到任何错误。
#!/bin/bash
ssh root@XXX.XXX.XXX.XXX << 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
Heredocs 默认在其中扩展变量,因此您的 [open $filename "w"]
更改为 open "w"]
(以及其他地方的类似更改),除非您在外部脚本中导出了 filename
变量。如果您不希望发生这种扩展,请引用您的印记:
ssh root@XXX.XXX.XXX.XXX <<'EOF'
script='content'
# intentionally not quoting this sigil, since in this case expansion is desired
tclsh <<HERE
$script
HERE
EOF