如何解决编写适用于Windows的ActiveState Tcl程序,该程序需要密码并输入密码
我想在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。你能帮忙吗?
解决方法
expect程序的关键是让生成的程序正常退出。按照目前的状态,在您期望的脚本发送了密码之后,它会立即退出,并且过早地杀死了产生的程序。
-
如果您不需要与sampleScript进行交互(即,让它运行完成),则期望脚本的最后一行应为
expect eof
-
否则,请使用
interact
阅读How to create a Minimal,Reproducible Example-更新的代码不会重现您看到的错误
- Tcl代码:
- 发送邮件时,通常需要“按Enter”:
send "password\r"
- 您是否已将
expect eof
添加到Tcl脚本?如果没有,您可能在有机会创建输出文件之前杀死sampleScript.sh
- 发送邮件时,通常需要“按Enter”:
- sampleScript.sh:那真的是您的示例脚本吗?密码提示在哪里?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。