在我的例子中,我喜欢这个json数据:
sshpass -p $PASSWORD ssh -o StrictHostKeyChecking=no $LOGIN /bin/bash -s << EOT
echo "Saving to file.."
USER_DATA="{\"id\":"$USER_ID",\"sha\":"$USER_SHA"}"
echo "{\"id\":"$PRODUCT_ID",\"user\":"$USER_DATA"}" | jq -re > ~/user.json
EOT
当我尝试保存这个json文件时,使用消息获取错误:
解析错误:第21列第1行不匹配的“}”
如何正确地将json数据保存到文件中?
发布于 2021-06-03 05:37:45
您应该使用jq
来创建json。试着做这样的事情:
sshpass -p $PASSWORD ssh -o StrictHostKeyChecking=no $LOGIN /bin/bash -s << EOT
echo "Saving to file.."
jq --arg id "$PRODUCT_ID" -n '{$id}' | \
jq --arg id "$USER_ID" \
--arg sha "$USER_SHA" \
--arg user "user" \
'.[$user]={$id, $sha}' > ~/user.json
EOT
解释:
--arg id "$PRODUCT_ID"
:为jq创建一个变量,名为id
,它包含从$PRODUCT_ID
-n '{$id}'
:create一个新的json模板{id : $id}
jq ... | jq ...
:我们传递第一个jq
命令的输出作为第二个command'.[$user]={$id, $sha}'
的输入:我们向输入.[$user]
中添加新元素:来自$user
variable{$id, $sha}
:将从变量创建一个对象的元素名称,即{id : $id, sha : $sha}
user : {id : $id, sha : $sha}
https://stackoverflow.com/questions/67821411
复制