[英]Write ActiveState Tcl Program for Windows that expects a password and enters it
我想在 Windows 中编写一个 shell 程序,该程序运行另一个 shell 脚本并期望来自 Git bash 终端的密码提示并输入它。 这是我到目前为止:
#!/bin/sh
# \
exec tclsh "$0" ${1+"$@"}
package require Expect
spawn sampleScript.sh
expect "Password:"
send "pass123"
sampleScript.sh 代码:
echo 'Hello, world.' >foo.txt
我的程序输出如下:
'The operation completed successfully. while executing "spawn sampleScript.sh"
(file "compare.tcl" line 6)'
但是,在脚本所在的本地文件夹中没有创建 foo.txt。 你能帮我吗?
期望程序的关键是让生成的程序优雅地退出。 按照目前的情况,在您的期望脚本发送密码后,它会立即退出,这会过早地杀死生成的程序。
如果您不需要与 sampleScript 交互(即让它运行到完成),则期望脚本中的最后一行应该是
expect eof
否则,使用
interact
阅读如何创建最小的、可重现的示例——您更新的代码不会重现您看到的错误
send "password\\r"
expect eof
? 如果没有,您可能会在它有机会创建输出文件之前杀死 sampleScript.sh
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.