背景
我希望能够将 json 文件传递给 WP CLI,以迭代创建帖子。
所以我想我可以创建一个 JSON 文件:
[
{
"post_type": "post",
"post_title": "Test",
"post_content": "[leaflet-map][leaflet-marker]",
"post_status": "publish"
},
{
"post_type": "post",
"post_title": "Number 2",
"post_content": "[leaflet-map fitbounds][leaflet-circle]",
"post_status": "publish"
}
]
并用 jq 迭代数组:
cat posts.json | jq --raw-output .[]
我希望能够迭代这些以执行类似的功能:
wp post create \
--post_type=post \
--post_title='Test Map' \
--post_content='[leaflet-map] [leaflet-marker]' \
--post_status='publish'
有什么方法可以用 jq
或类似的方法来做到这一点?
到目前为止我得到的最接近的是:
> for i in $(cat posts.json | jq -c .[]); do echo $i; done
但这似乎与字符串中的(有效)空格有关。输出:
{"post_type":"post","post_title":"Test","post_content":"[leaflet-map][leaflet-marker]","post_status":"publish"}
{"post_type":"post","post_title":"Number
2","post_content":"[leaflet-map
fitbounds][leaflet-circle]","post_status":"publish"}
这种方法是否可行?
最佳答案
使用 while
读取整行,而不是遍历命令替换产生的单词。
while IFS= read -r obj; do
...
done < <(jq -c '.[]' posts.json)
关于json - 如何从 jq 在 bash 中迭代 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54952736/