有些进程在计算中途输入密码。我希望在流程开始时插入一个密码,所以我试图创建一个通用的expect脚本来生成一个进程,然后给它一个密码。
这个期望脚本会输入要输入的密码和生成的过程:
#!/usr/bin/expect
set timeout 120
# Get program to spawn and password to send
set pswd [lindex $argv 0]
set program [lindex $argv 1]
spawn $program
expect "Password:"
send "$pswd\r"
interact
这将从bash函数调用:
function vup {
echo -n "Enter Password: "
read -s pswd
echo
expectPassword.exp $pswd "vagrant up"
}
但我收到错误:
couldn't execute "vagrant up": no such file or directory
while executing
"spawn [join $program]"
当我在没有参数的程序上使用它时,这个脚本似乎有效。但我不确定如何使其适用于具有可变数量参数的人。
答案 0 :(得分:3)
一种方法是使用eval
:
eval spawn $program