json - 如何停止例如 bash 脚本
问题描述
我有这个文件
$img=1.jpg,2.jpg,3.jpg,4.jpg,5.jpg,6.jpg,7.jpg
这是我的代码
# Split on the comma, and create an array
IFS=',' read -ra images <<< "$timg"
# Start the JSON
echo "\"pictures\":["
# loop through the images, and output the JSON
# keep track of the index of output items
counter=1
for image in "${images[@]}"
do
echo -n " {\"source\":\"$image\"}"
# Add a comma unless it is the last element in the array
if [ $counter -lt ${#images[@]} ]
then
echo ","
else
echo ""
fi
(( counter = counter + 1 ))
done
# Close the JSON
echo "]}"
结果是
{"source":"1.jpg"},
{"source":"2.jpg"},
{"source":"3.jpg"},
{"source":"4.jpg"},
{"source":"5.jpg"},
{"source":"6.jpg"},
{"source":"7.jpg"}
我想给 for 命令只读取 x 个数字并停止。它可能吗?Thx 示例我只想运行前 5 个结果期望是:
{"source":"1.jpg"},
{"source":"2.jpg"},
{"source":"3.jpg"},
{"source":"4.jpg"},
{"source":"5.jpg"}
解决方案
这几乎是微不足道的使用jq
:
$ img=1.jpg,2.jpg,3.jpg,4.jpg,5.jpg,6.jpg,7.jpg
$ echo "$img" | jq -R --argjson n 5 'split(",")[:$n] | {pictures: map({source: .})}'
{
"pictures": [
{
"source": "1.jpg"
},
{
"source": "2.jpg"
},
{
"source": "3.jpg"
},
{
"source": "4.jpg"
},
{
"source": "5.jpg"
}
]
}
推荐阅读
- alexa - 模式识别 Alexa 开发者控制台
- terraform - 如何使用 Terraform 为 GCP 中的实例添加私有 IP 输出?
- css - 为什么 Firefox 在元素嵌套级别 2 之后停止渲染嵌套的多列布局,以及如何解决?
- javascript - 如何设置 p5js 按钮对象相对于画布(0.0)的位置?
- google-chrome-extension - chrome.scripting.executeScript - 无法读取未定义的属性“executeScript”
- sql - athena presto - 基于多个嵌套结构的过滤器
- go - HELM:如何在 if-else 条件下将字符串转换为小写/大写?
- python-3.x - RASTERSTATS 与 python 3.8 兼容吗?
- wordpress - 解析错误:语法错误,第 53 行 wp-content/themes/electro/functions.php 中的文件意外结束
- python - 有没有办法在 python wx.dialog 中更改标题字体或背景颜色?