0

无关:这一直让我头疼。

下面是一个 curl 函数,它的工作原理如下(为了便于阅读,我把它放在多行上):

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} 退出。

4

2 回答 2

1

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

例子:

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

或者,实际上,更简单:

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

->“布拉”

于 2014-12-12T13:17:35.913 回答
0

好的,

我最终得到了它。所以

  1. 我有一个指向 bash 文件的别名。该文件接收一个必须用引号传递的变量:

$jiraReleases "Version1.2.3"

  1. 该文件采用变量:

JIRA_FIXVERSION=$1

  1. 在 jq 中,引号被转义,并添加了额外的引号和撇号。请注意,下面的行也被单引号和反引号包围。

.[] | {id,name} | select(.name=='\""${JIRA_FIXVERSION}"\"')

于 2014-12-13T15:47:44.770 回答