【发布时间】:2019-02-06 00:02:12
【问题描述】:
我有这个文件
$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 个数字并停止。 它可能吗?谢谢 示例我只想运行前 5 个 结果愿望是:
{"source":"1.jpg"},
{"source":"2.jpg"},
{"source":"3.jpg"},
{"source":"4.jpg"},
{"source":"5.jpg"}
【问题讨论】:
-
不要像那样手动创建 JSON。安装
jq实用程序。
标签: json bash shell loops unix