我认为我没有正确理解“期望”实用程序。
在寻找一种自动化涉及 jar 签名的构建过程的方法时,我遇到了 expect,并且认为我可以使用它为 jarsigner 提供密码(在 shell 脚本中设置密码是否是个好主意,我了解其风险)。
期望“输入密钥库的密码:”
jarsigner 并没有注意到这一点,而是坐在那条线旁等待。
我是否完全误解了“期望”的意思?如果是这样,我可以用什么来达到这种效果?
答案1
我认为它应该能看到你代码的更多上下文。但我认为应该采取以下措施:
expect -c "spawn jarsigner <options here> ; expect \"Enter Passphrase for keystore:\" ; send $PASSWORD\n ; interact"
答案2
首先,您确定 jarsigner 没有办法从命令行选项或配置文件中提供该选项吗?如果没有,expect 是最后一种很好的选择。确保使用 pty 而不是管道生成子进程 (jarsigner)。某些应用程序(尤其是那些要求输入密码的应用程序)在原始模式下使用 tty 设备并期望使用 tty 接口。
然后,您需要发送密码。