0
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 创建一个别名,该别名git svn fetch -r对 hudsen 上报告的最后一个稳定版本的 svn 修订号进行处理。我下载页面,解析修订号并尝试获取该修订号。获取修订号的命令可以正常工作,但是当我尝试创建别名时它失败了:

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

我无法弄清楚该命令有什么问题,因为我关闭了打开的反引号并且所有打开'的都关闭了。

我怎样才能让它工作?

4

2 回答 2

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\"。请测试。

于 2013-08-13T09:53:00.840 回答
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')"
}

而且我不确定是什么!在 !git for..

在 `` 上使用 $() 也是一个好方法,因为它更容易递归,并将 $() 放在 "" 周围,以防止使用 $IFS 意外扩展为多个参数。

于 2013-08-13T08:41:31.093 回答