Si establece un separador de campo diferente, puede usar directamente un for
bucle:
IFS=","
for v in $variable
do
# things with "$v" ...
done
También puede almacenar los valores en una matriz y luego recorrerla como se indica en ¿Cómo divido una cadena en un delimitador en Bash? :
IFS=, read -ra values <<< "$variable"
for v in "${values[@]}"
do
# things with "$v"
done
Prueba
$ variable="abc,def,ghij"
$ IFS=","
$ for v in $variable
> do
> echo "var is $v"
> done
var is abc
var is def
var is ghij
Puede encontrar un enfoque más amplio en esta solución sobre cómo recorrer una lista separada por comas y ejecutar un comando para cada entrada .
Ejemplos sobre el segundo enfoque:
$ 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 --