我正在尝试调用shell脚本并将结果存储在expect变量中。 get_pw.sh接受2个args并使用提供的md5hash解密文件。如果我从bash提示符执行./get_pw.sh file.test md5hash,它会按预期返回密码字符串。从expect调用时,不会返回密码。期望调试显示:
expect: does "" (spawn_id exp0) match regular expression "[^\s]"?
因此看起来脚本在从expect调用时没有返回密码字符串。相关代码:
#!/usr/bin/expect
send "./get_pw.sh file.test md5hash \r"
expect -re {[^\s]} {
set password $expect_out(0,string)
}
puts "The password is: $password"
答案 0 :(得分:1)
您需要先spawn
一个命令才能send
输入并输出expect
。
要将 expect 变量设置为命令的输出,请使用
set varname [exec command]
答案 1 :(得分:0)
如果你必须这样做,
log_user 0
spawn -noecho get_pw.sh file hash
expect eof
set passwd [string trimright $expect_out(buffer) "\r\n"]
puts $passwd
Jens的答案现在看起来很不错......