[英]How to combine for loop values in one variable separated by comma [unix scripting]
[英]Unix Loop and add comma for JSON
我正在處理要導入JSON代碼的csv文件。 我想補充"
在中部echo
,並在循環加,
分離不到底。
這是變量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"}
]}
您能建議在代碼中間添加一些選項,
而不是在最后嗎?
我對您的腳本進行了一些修改,並:
#!/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"}
]}
您將必須對其進行修改以在某處添加一個開口{
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.