bash - 使用 JQ 去除值中的双引号
问题描述
我正在尝试在--data-raw
的帮助下创建一个jq
,它在大多数情况下都可以正常工作,除非我有一个列表。
#!/bin/bash
TEST="'bfc', 'punch', 'mld', 'extended_mld', 'chargingstation', 'ch'"
BFC_TAG=$BUILD_ID
UPLOAD_TO=s3
COMPILE=$test
REGION=world
PROJECT=bfc
JSON_STRING=$( jq -n \
--arg a "$BFC_TAG" \
--arg b "$UPLOAD_TO" \
--arg c "$TEST" \
--arg d "$REGION" \
--arg f "$PROJECT" '
{brfc_tag: $a,
upload_to: $b,
compile: [ $c ],
region: $d,
project: $f
}')
echo ${JSON_STRING}
输出:
{ "bfc_tag": "", "upload_to": "s3", "compile": [ "'bfc', 'punch', 'mld', 'extended_mld', 'chargingstation', 'ch'" ], "region": "world", "project": "bfc" }
如果你查看输出,特别是compile
它在开头和结尾都有“”的键,这会破坏 python 代码,它会消耗这个,我需要去掉编译中的双引号,任何帮助都会得到帮助。
解决方案
这些单引号已经存在于您的输入字符串中:
TEST="'bfc', 'punch', 'mld', 'extended_mld', 'chargingstation', 'ch'"
我建议删除这些,并创建一个简单的 csv 女巫 JQ 可以为我们拆分
TEST="bfc,punch,mld,extended_mld,chargingstation,ch"
要从该字符串创建一个数组,请使用;
compile: $c | split(",")
所以完整的代码:
#!/bin/bash
TEST="bfc,punch,mld,extended_mld,chargingstation,ch"
BFC_TAG=$BUILD_ID
UPLOAD_TO=s3
COMPILE=$test
REGION=world
PROJECT=bfc
JSON_STRING=$( jq -n \
--arg a "$BFC_TAG" \
--arg b "$UPLOAD_TO" \
--arg c "$TEST" \
--arg d "$REGION" \
--arg f "$PROJECT" '
{brfc_tag: $a,
upload_to: $b,
compile: $c | split(","),
region: $d,
project: $f
}')
echo ${JSON_STRING}
将产生:
{ "brfc_tag": "", "upload_to": "s3", "compile": [ "bfc", "punch", "mld", "extended_mld", "chargingstation", "ch" ], "region": "world", "project": "bfc" }
推荐阅读
- azure-web-app-service - Microsoft Bot Framework Composer 中的自动电子邮件发送
- json - 在移动应用程序中获取帖子时,WordPress API 在图片前后出现奇怪的空白
- c - 1 EXTI 函数中的 2 个回调?
- cmake - [VSCode][CMake][clang-tidy] 错误:PCH 文件使用不再支持的旧 PCH 格式
- assembly - 两个十六进制内存地址之间区域中的字节
- swift - 翠鸟图像不随父视图的其余部分过渡
- sql-server - 为什么服务帐户无法引用其自己的默认架构?
- python - Selenium 根据网格坐标获取单元格
- android - 如何离线保存 Parser feed sqlite 数据库?
- python - 如何找到谷歌驱动器的特定文件ID?