customfetch = !git fetch -r `wget -qO - http://hudson/url_to_project/lastStableBuild/ | gawk 'c&&!--c;/Revision:/{c=1}' | sed -ne 's/<.*//p' | sed -ne 's/\s//p'`
我想为git创建一个别名,它对hudsen上报告的最后一个稳定版本的svn版本号执行git svn fetch -r
。我下载页面,解析修订号并尝试获取该修订号。获取修订版号的命令可以正常工作,但是当我尝试创建别名时,它会失败:
git svn fetch -r `wget -qO - http://hudson/url_to_project/lastStableBuild/ | gawk 'c&&!--c: -c: line 0: unexpected EOF while looking for matching `''
git svn fetch -r `wget -qO - http://hudson/url_to_project/lastStableBuild/ | gawk 'c&&!--c: -c: line 1: syntax error: unexpected end of file
我无法弄清楚该命令有什么问题,因为我关闭了打开的反引号,所有打开的'
都已关闭。
我怎样才能让它发挥作用?
答案 0 :(得分:1)
字符串实际上是在bash shell中进行评估,因此最好将内容作为单个字符串放置,以减少混淆:
customfetch = ! "git fetch -r \"$(wget -qO - http://hudson/url_to_project/lastStableBuild/ | gawk \"c&&!--c;/Revision:/{c=1}\" | sed -ne \"s/<.*//p\" | sed -ne \"s/\\s//p\")\""
它仍然会导致错误,但这已经与git fetch
更具体-r
的论据有关。
另外,我无法确定sed -ne \"s/\\s//p\"
实际上是sed -ne \"s/\\\\s//p\"
。请测试。
答案 1 :(得分:0)
也许你想创建一个函数?
function customfetch {
git fetch -r "$(wget -qO - http://hudson/url_to_project/lastStableBuild/ | gawk 'c&&!--c;/Revision:/{c=1}' | sed -ne 's/<.*//p' | sed -ne 's/\s//p')"
}
而且我不确定是什么! in!git for ..
使用$()超过``也是一件好事,因为它更容易递归,并在$“周围放置$()以防止用$ IFS无意中扩展到多个参数。