Remova a última vírgula depois de terminar de criar a string.
for …
done
step=${step%,}
regions_uspos=${regions_uspos%,}
${VARIABLE%PATTERM}
expande para o valor de VARIABLE
com o menor sufixo correspondente PATTERN}
removido. Esta construção é suportada em todos os shell POSIX. Também é suportado em todas as configurações do BusyBox.
Se você precisar das sequências intermediárias sem uma vírgula final, poderá retirar a vírgula final dentro do loop. Como alternativa, crie as cadeias sem uma vírgula final adicionando uma vírgula antes do elemento anexado. Para evitar ter uma vírgula inicial, detecte a primeira iteração através do loop.
first=1
for … do
if [ -n "$first" ]; then
first=
else
step="$step,"
regions_uspos="$regions_uspos,"
fi
step="$step$i"
…
done