我不希望我的Phing部署脚本以明文形式回显输入的密码,所以我试图创建一个shell脚本,在不显示输入字符的情况下读取密码。
我的脚本如下:
#!/bin/bash
read -s -p "" password;
echo "$password"
(顺便说一句:这个解决方案要归功于有人在Phing的票务跟踪器上发布的评论:https://www.phing.info/trac/ticket/885)
如果我直接从命令行调用它,这样做很好:
svn up --username myusername --password `/bin/bash /path/to/script/getpassword.sh`
如果密码不包含特殊字符,它也可以在Phing中工作。奇怪的是,如果我输入的密码恰好包含哈希(#)符号,就会导致svn身份验证错误。我无法像上面的例子那样从命令行重现这种行为。
以下是Phing部分:
<propertyprompt propertyname="svn.user" prompttext="Please tell me your svn username:"/>
<echo>"Please tell me your svn password:[]</echo>
<exec command="sh ${application.startdir}/path/to/script/getpassword.sh" outputProperty="svn.pass" />
<svnupdate
svnpath="/usr/bin/svn"
username="${svn.user}"
password="${svn.pass}"
nocache="true"
todir="${path-checkout}"/>
有人知道这个问题的原因吗?我浏览了PEAR/pear/php/phing/tasks/ext/svn
中的消息来源,但没有发现任何可疑之处。
提前感谢您的任何建议!
您是否尝试过使用echo-n不打印尾部换行符?