jq - jq:传递不带引号的字符串参数
问题描述
我想传递一个不带引号的参数(JQ arg 默认有双引号),因为它应该用作过滤器。例如
propt='.properties'
final=($(jq -r -c --arg p $propt '$p' sample.json))
echo $final
示例.json
{
"type": "object",
"description": "Contains information",
"properties": {
"type": {
"description": "Type"
}
}
}
所以最终它会打印出来,.properties
而不是预期的{"type":{"description":"Type"}}
我为此目的使用 bash shell。
请让我知道我做错了什么。
解决方案
如果我理解正确,您会因为认为需要在 中设置一个变量jq
而不是让 shell 进行扩展而偏离了方向:
% foo='.properties'
% jq -r -c "$foo" sample.json
输出:
{"type":{"description":"Type"}}
注意 $foo 上的双引号仍然允许 shell 将变量扩展为 .properties。那就是说你可以不安全地使用:jq -r -c $foo sample.json
推荐阅读
- linux - docker-compose 卷集主机路径
- javascript - Yandex Metric第一次点击响应长
- windows - 如何将进程创建和设置为 Windows 服务?
- excel - 在 AHK 语言中使用 COM 自动过滤器时遇到问题
- python - 如果句子列中少于 4 个字符,如何删除数据框行?
- python - Scipy的solve_ivp函数文档中的字母k是什么意思?
- java - Java:如何在没有时区转换的情况下将日期保存到 MySQL?
- android - 暗视图中没有 MaterialCardView 背景
- python - 如何使用 Python Tkinter 在一行中显示几个标签,在下一行显示几个标签?
- python-3.x - 如何使用 light gbm cv 导致 light gbm train 功能