我正在编写一个Bash脚本,用于自动签名YUM存储库中的RPM包。为了完成这个任务,我使用expect
。
以下是我的源代码:
/usr/bin/expect <<EOD
spawn bash -c "rpm --resign ${NEW_REPO}/packages/*.rpm"
expect "Enter pass phrase:"
send "${GPG_PASS}\r"
expect eof
EOD
NEW_REPO
是 YUM 软件仓库的路径,GPG_PASS
是 GPG 密钥的密码。大部分情况下,这样做非常有效,可以成功签名软件包。
问题是:这段代码只能签名 28-30 个 RPM 软件包,尽管目录中有 42 个软件包。手动从命令行批量签署 RPM 软件包完美运行,但是在我的脚本中,
expect
块会在到达所有软件包之前停止运行。这是 expect
的一些奇怪特性吗?还是我做错了什么?欢迎提出解决方法或建议。谢谢。
expect
块的第一行,还是在我的bash脚本中expect
块之前的部分? - scottysseus