将bash脚本变量传递给反引号中的引用值

时间:2014-12-12 12:57:05

标签: bash jira jq

无关:这一直在我的脑海里。

下面是一个卷曲功能,如下所示(为了便于阅读,我将它放在多行上):

fixVersionQuery='https://thejirainstall.com/jira/rest/api/2/project/ON/versions?';

myJSONResponse=`curl -u username:password -X GET -H "Content-Type: application/json" \
--insecure --silent $fixVersionQuery |jq '.[] | {id,name} |  \       
select(.name=="Version-1.2.3") | .["id"]'`; 

以上作品。但是,我想查询一个名称我传递给该函数的版本。因此"Version-1.2.3"可能是"${JIRA_FIXVERSION}"等变量。问题是,在上面的行中,我无法弄清楚撇号的哪些组合可以使用返回标记或引号。虽然我知道函数的一般结构将是......

JIRA_FIXVERSION;
fixVersionQuery='https://thejirainstall.com/jira/rest/api/2/project/ON/versions?';

myJSONResponse=`curl -u username:password -X GET -H "Content-Type: application/json" \
--insecure --silent $fixVersionQuery |jq '.[] | {id,name} |  \       
select(.name=="'$JIRA_FIXVERSION'") | .["id"]'`; 

如果我使用了"'$JIRA_FIXVERSION'"或$ {JIRA_FIXVERSION},则上面会出现编译错误。

2 个答案:

答案 0 :(得分:1)

我想你只需要引用双引号(这样它们就会被shell作为文字字符单独留下)。 shell通常会在反引号中替换变量,我想你只想在扩展的JIRA_FIXVERSION周围加上双引号,这样就会生成一个类似你给出的例子的命令(包含"Version-...")。

示例:

$ XX=bla; echo `echo kklkj | sed s/kk/\"$XX\"/g`
"bla"lkj

或者,事实上,更简单:

XX=bla; echo `echo \"$XX\"`

- > " BLA"

答案 1 :(得分:0)

好的,

我最终得到了它。所以

  1. 我有一个指向bash文件的别名。该文件接收一个必须在引号中传递的变量:
  2. $jiraReleases "Version1.2.3"

    1. 该文件采用变量:
    2. JIRA_FIXVERSION=$1

      1. Wthin jq引号被转义,并添加了额外的引号和撇号。请注意,下面的行也被单引号和反引号包围。
      2. .[] | {id,name} | select(.name=='\""${JIRA_FIXVERSION}"\"')