【发布时间】:2014-04-04 16:36:27
【问题描述】:
我正在为我们的 bash 代码编写一个简单的部署脚本。目前我有一些如下代码,可以正常工作。如果由于某种原因身份验证失败(例如密码已更改但在此脚本中未更改),则svn 命令将要求输入密码。由于这是通过自动化系统运行的,因此不会被任何人看到。
如何让svn 在身份验证失败时返回非 0 错误代码,而不是永远等待(或者只要我一直等待)输入?
代码sn-p是:
if eval "svn update --username xxxxxxx --password xxxxxxx"; then
echo "Updated from SVN ok"
else
echo "Update from SVN failed"
exit 1
fi
# Do more stuff here as update was ok
显然真实的用户名/密码已被替换为 xxxxx。
如果密码错误,那么svn命令的输出如下:
Updating '.':
Authentication realm: <https://xxxxxxxxxxx:443> SVN
Username:
感谢您的帮助。
【问题讨论】:
-
也许您可以使用
expect来编造一些东西,您可以在其中指定超时...oreilly.com/catalog/expect/chapter/ch03.html -
嗨,马克,听起来值得研究。我去看看...
-
eval在这里是不必要的;if svn update ... ; then很好。