这可能是一个简单的问题,但是我有一个简单的 expect 脚本,我在其中添加了可执行位,它似乎忽略了 #!/usr/bin/expect 解释器行。此外,似乎变量没有被设置,因为当我回显它们时,它们是空白的……
#!/usr/bin/expect -f
set device "1.1.1.1"
set user "testuser"
spawn ssh $user@$device
echo $device
echo $user
ls -lh
-rwxr-xr-x root root testexpect.exp
感谢社区的帮助!!
PS 我正在运行 Debian Wheezy,通过 apt-get install expect 安装了 expect...谢谢
答案1
Expect 基于 Tcl 语言,因此您不应该使用 bash“echo”——您应该使用“puts”在屏幕上打印一些内容:
#!/usr/bin/expect -f
set device "1.1.1.1"
set user "testuser"
spawn ssh $user@$device
puts $device
puts $user
你会得到如下结果:
$ ./test.exp
spawn ssh [email protected]
1.1.1.1
testuser
答案2
错误消息表明您正在使用明确的解释器运行该命令,例如:
bash ./testexpect.exp
这将忽略“#!”行。无论启动脚本的是什么,只需命名文件(或明确说明expect ./testexpect.exp
)。如果你的#!行不好,你会得到/usr/bin/expect: bad interpreter: ...