Я немного изменил ваш скрипт и:
#!/bin/bash
#
img="https://example.com/img/p/8/1/1/811.jpg,https://example.com/img/p/8/0/8/808.jpg"
# Remove the double quotes
img=$(echo $img | tr -d '"')
# Split on the comma, and create an array
IFS=',' read -ra images <<< "$img"
# 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 "]}"
Я преобразовал $img
в массив. Затем я вывожу JSON на основе массива. Если это не последний элемент в массиве, я добавляю запятую рядом с элементом.
Вывод:
$ ./so.bash
"pictures":[
{"source":"https://example.com/img/p/8/1/1/811.jpg"},
{"source":"https://example.com/img/p/8/0/8/808.jpg"}
]}
Вам придется изменить его, чтобы добавить куда-нибудь отверстие {
.