运行期望代码时发送错误

时间:2012-11-18 07:27:04

标签: linux bash expect

我做了一个期待代码:

#!/ usr / bin / expect -f
产卵ls
期待“*] $ *”
发送“cd / to / some / path \ n”
期待“*] $ *”
发送“sudo -u root ./program.sh”
期待“*:*”
发送“i_am_password \ n”
互动

执行时我收到以下错误:

产生ls
my_pgm.exp abc.sh axyz.zip all.zip test.exp
发送:spawn id exp6未打开
    执行时 “发送”cd /到/ some / path \ n“”
    (档案“./my_pgm.exp”第5行)

我在ubuntu上运行此代码。请帮忙。

1 个答案:

答案 0 :(得分:1)

我不确定是否真的理解为什么你需要期望,但对于bash脚本,试试这个:

#!/usr/bin/expect -f
spawn bash -i
expect "*$ "
send "cd /to/some/path\n"
expect "*$ "
send "sudo -u root ./program.sh\n"
expect "*: "
send "i_am_password\n"
interact

<强>描述

spawn指令指示期望 使用哪个程序进行交互。因此,如果您想要与bash互动,则必须向expect询问spawn bash。 bash的-i参数会强制它们以交互式模式启动。

总之,这看起来是一个非常糟糕的主意,但这只是我的意见;)