jq delete 函数不适用于变量
jq delete function doesn't work with variable
我正在尝试将变量传递给 jq delete 函数。它不适用于变量,但如果硬编码则可以。谁能帮我理解我做错了什么。
无效:
echo '{"profiles": {"a":"1", "b":"2"}}' | jq --arg a '.a' '.profiles | del($a)'
作品:
echo '{"profiles": {"a":"1", "b":"2"}}' | jq '.profiles | del(.a)'
您只能将原始字符串(使用 --arg
选项)或 JSON-encoded 字符串(使用 --argjson
选项)作为参数传递。您不能将 jq 代码作为变量传递(并在 jq 中对其求值)。
但是,您可以通过字符串表示来引用字段。因此,只需使用字段名称作为参数,并使用 .[$var]
来解决它:
echo '{"profiles": {"a":"1", "b":"2"}}' | jq --arg a 'a' '.profiles | del(.[$a])'
{
"b": "2"
}
我正在尝试将变量传递给 jq delete 函数。它不适用于变量,但如果硬编码则可以。谁能帮我理解我做错了什么。
无效:
echo '{"profiles": {"a":"1", "b":"2"}}' | jq --arg a '.a' '.profiles | del($a)'
作品:
echo '{"profiles": {"a":"1", "b":"2"}}' | jq '.profiles | del(.a)'
您只能将原始字符串(使用 --arg
选项)或 JSON-encoded 字符串(使用 --argjson
选项)作为参数传递。您不能将 jq 代码作为变量传递(并在 jq 中对其求值)。
但是,您可以通过字符串表示来引用字段。因此,只需使用字段名称作为参数,并使用 .[$var]
来解决它:
echo '{"profiles": {"a":"1", "b":"2"}}' | jq --arg a 'a' '.profiles | del(.[$a])'
{
"b": "2"
}