【问题标题】:unexpected EOF while looking for matching `寻找匹配时意外的 EOF `
【发布时间】:2013-08-13 17:53:00
【问题描述】:
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

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

我怎样才能让它工作?

【问题讨论】:

    标签: git git-svn bash


    【解决方案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\"。请测试。

    【讨论】:

      【解决方案2】:

      也许你想创建一个函数?

      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 意外扩展为多个参数。

      【讨论】:

      • 所有解决方案似乎都不起作用......如果我添加它们,配置文件中的 git 会发出错误提示
      • @JasonSwartz 所以它实际上是关于 git 的配置文件。我以为是关于 bash 的,但实际上与它无关,抱歉。
      • @JasonSwartz 我添加了另一个答案。如果我仍然可以删除它,我将在稍后删除它。
      猜你喜欢
      • 1970-01-01
      • 2019-01-19
      • 2014-12-11
      • 2020-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多