Unix Loop и добавьте запятую для JSON - PullRequest
0 голосов
/ 25 августа 2018

Я работаю над CSV-файлом для импорта в код JSON.Я хочу добавить " в середине echo и в цикле добавить ,, чтобы отделить no в конце.

Это переменная IMG.(В этом примере у меня есть 2 URL, но, возможно, это может быть и больше.)

img="https://example.com/img/p/8/1/1/811.jpg,https://example.com/img/p/8/0/8/808.jpg"

Это мой код:

img=$(echo   $img |  tr -d '"')
echo "    \"pictures\":["                             >>"$output_filename"
    for imgt in ${img//,/ }
    do
    echo "    {\"source\":$imgt} "                    >>"$output_filename"
    done
    echo ']'                                          >>"$output_filename"
    echo '}'                                          >>"$output_filename"

Результат

  "pictures":[
{"source":"https://quierotodo.com.ar/img/p/8/1/1/811.jpg} 
{"source":https://quierotodo.com.ar/img/p/8/0/8/808.jpg"}
]}

Ожидаемый результат

   "pictures":[
{"source":"https://quierotodo.com.ar/img/p/8/1/1/811.jpg"}, 
{"source":"https://quierotodo.com.ar/img/p/8/0/8/808.jpg"}
]}

Можете ли вы предложить какой-нибудь вариант добавления , в середине кода, а не в последнем?

1 Ответ

0 голосов
/ 25 августа 2018

Я немного изменил ваш скрипт и:

#!/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"}
]}

Вам придется изменить его, чтобы добавить куда-нибудь отверстие {.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...