jq
是一个轻量级且灵活的命令行 JSON 处理器。它允许你解析、过滤、转换和输出 JSON 数据。arg
过滤器是 jq
中的一个功能,用于将外部变量传递给 jq
表达式并在其中使用。
jq
提供了丰富的操作符和函数来处理 JSON 数据。arg
过滤器主要用于将字符串类型的变量传递给 jq
。jq
表达式中使用外部变量时,例如处理动态生成的 JSON 数据或根据环境变量调整输出。假设你有一个 Bash 变量 STR_VALUES
,其值为逗号分隔的字符串,你想将其传递给 jq
并在 JSON 中使用这些值。
STR_VALUES="apple,banana,cherry"
echo '{"fruits": ["orange"]}' | jq --argjson arr "$(echo $STR_VALUES | tr ',' ' ')" '.fruits += $arr'
当你尝试直接传递逗号分隔的字符串给 jq
的 arg
过滤器时,jq
会将其视为一个整体的字符串,而不是多个独立的元素。因此,你需要先将这个字符串转换为 jq
可以理解的格式,通常是 JSON 数组。
jq
的 arg
过滤器默认接收的是单个字符串值。逗号分隔的字符串在 jq
中不会自动解析为数组。
tr
命令将逗号替换为空格,然后通过 --argjson
选项传递给 jq
,这样 jq
就会将其解析为一个 JSON 数组。tr
命令将逗号替换为空格,然后通过 --argjson
选项传递给 jq
,这样 jq
就会将其解析为一个 JSON 数组。jq
。jq
。通过这些方法,你可以有效地将逗号分隔的字符串值变量传递给 jq
并在 JSON 处理中使用它们。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云