Allright then why do you try to add sed code with non-loop?
with non-loop
# echo ' , abc, , sd , , , , ' | sed -r 's/( *,|,|^) *(,|$)/\1\2/g;s/, *,/,,/g;s/, *$/,/' |od -bc
0000000 054 040 040 040 040 040 040 040 040 040 040 141 142 143 054 054
, a b c , ,
0000020 040 040 163 144 040 040 040 054 054 054 054 012
s d , , , , \n
0000034
with loop
# echo ' , abc, , sd , , , , ' | sed -r ':a;s/(,|^) *(,|$)/\1\2/g;ta' | od -bc
0000000 054 040 040 040 040 040 040 040 040 040 040 141 142 143 054 054
, a b c , ,
0000020 040 040 163 144 040 040 040 054 054 054 054 012
s d , , , , \n
0000034