Se você definir um separador de campo diferente, poderá usar diretamente um for
loop:
IFS=","
for v in $variable
do
# things with "$v" ...
done
Você também pode armazenar os valores em uma matriz e, em seguida, percorrê-la conforme indicado em Como faço para dividir uma string em um delimitador no Bash? :
IFS=, read -ra values <<< "$variable"
for v in "${values[@]}"
do
# things with "$v"
done
Teste
$ variable="abc,def,ghij"
$ IFS=","
$ for v in $variable
> do
> echo "var is $v"
> done
var is abc
var is def
var is ghij
Você pode encontrar uma abordagem mais ampla nesta solução para Como iterar por meio de uma lista separada por vírgulas e executar um comando para cada entrada .
Exemplos da segunda abordagem:
$ IFS=, read -ra vals <<< "abc,def,ghij"
$ printf "%s\n" "${vals[@]}"
abc
def
ghij
$ for v in "${vals[@]}"; do echo "$v --"; done
abc --
def --
ghij --