我对jq相当陌生,我正在使用本教程将一个新的Org添加到超级分类账结构网络中。
在整个教程中,jq得到了广泛的使用,特别是修改json文件。
本教程使用了一个示例Org名称,但我试图使组织名称动态化。除了我试图将变量传递给jq之外,一切都进行得很好。
以下是jq命令及其输出。
jq版本: 1.5.1
出口MSPID=Org4MSP $ echo $MSPID Org4MSP
试图使用env传递变量。
关键词: env.MSPID
jq -s '.* {"channel_group":{"groups":{"Application":{"groups":{“env.MSPID”:.1}‘config.json org4.json
输出片段:它不是打印Org4MSP,而是打印文字字符串env.MSPID。
"env.MSPID": {
"groups": {},
"mod_policy": "Admins",
"policies": {
"Admins": {
"mod_policy": "Admins",
"policy": {
"type": 1,
"value": {
"identities": [
{试图使用--arg选项传递变量
关键词:"$MSP“
$MSPID‘-s’。* {"channel_group":{"groups":{"Application":{"groups":{“$MSP”:.1}‘config.json org4.json
输出片段:它不是打印Org4MSP,而是打印文字字符串$MSP。
"$MSP": {
"groups": {},
"mod_policy": "Admins",
"policies": {
"Admins": {
"mod_policy": "Admins",
"policy": {
"type": 1,
"value": {
"identities": [
{试图使用--arg选项传递变量,而不使用双引号:
关键词:$MSP
$ jq --arg "$MSPID“-s‘* {"channel_group":{"groups":{"Application":{"groups":{$MSP:.1}‘config.json org4.json
jq: error:语法错误,意外的':',期待'}‘(Unix引用问题?)在第1行:
。* {"channel_group":{"groups":{"Application":{"groups":{$MSP:.1}
jq: 1编译错误
试图使用env传递变量。没有双引号:
关键词: env.MSPID
jq -s '.* {"channel_group":{"groups":{"Application":{"groups":{env.msPID:.1}‘config.json org4.json
jq: error:语法错误,意外字段,期望'}‘(Unix引用问题?)在第1行:
。* {"channel_group":{"groups":{"Application":{"groups":{env.mspd:.1}
jq: 1编译错误
如果这似乎是一个微不足道的问题,我很抱歉,但是我已经在网上和文档中搜索过了,并且不明白为什么JSON键不会转换为shell变量的值。
谢谢
发布于 2020-01-10 18:47:24
环境变量
在你的子表达式中:
{"env.MSPID":.[1]}您引用了env.MSPID,从而使它成为一个文字字符串。由于您想调用env函数,所以应该编写:
{ (env.MSPID):.[1]}需要使用括号来确保jq将正确计算括号大小的表达式。
{$MSP:.1}
如前所述,当必须计算表达式以确定键的字符串值时,表达式必须为括号。
{($MSP):.[1]}https://stackoverflow.com/questions/59686938
复制相似问题