我是 bash 新手,我有一个 bash 脚本,其中包含一个名为“输出”的数组变量
我想将 bash 数组转换为 JSON 字符串。例如:
原始数组:
output = ['one', 'two']
期望的输出:
'["one","two"]'
我尝试过以下方法:
"$(jq -c -n '$ARGS.positional' --args "${output[@]}")"
但这似乎将数组包裹在另一组方括号内:
'["[\"one\",\"two\"]"]'
这不是我想要的。
另外,我想将 JSON 字符串分配给变量。
我也看到我可以做到这一点:
echo '{"foo" : "bar"}' | jq -R .
但我不知道如何使用变量“输出”而不是硬编码对象。另外,不知道如何将其结果分配给变量
编辑
这是 bash 脚本:
service_list_json="$(jq -c -n '$ARGS.positional' --args "${output[@]}")"
编辑2
好的,我想我可能知道问题出在哪里了。原始数组如下所示:
'["one","two"]'
我猜测数组周围的额外引号导致它被视为字符串?
$output
是一个字符串,而不是一个数组。
要声明 bash 数组,您需要以下语法:
output=(one two)
然后它会提供预期的结果。
service_list_json="$(jq -c -n '$ARGS.positional' --args "${output[@]}")"
echo "$service_list_json"
输出:
["one","two"]