Если вы установите другой разделитель полей, вы можете напрямую использовать for
цикл:
IFS=","
for v in $variable
do
# things with "$v" ...
done
Вы также можете сохранить значения в массиве, а затем просмотреть его в цикле, как указано в разделе Как разбить строку по разделителю в Bash? :
IFS=, read -ra values <<< "$variable"
for v in "${values[@]}"
do
# things with "$v"
done
Тест
$ variable="abc,def,ghij"
$ IFS=","
$ for v in $variable
> do
> echo "var is $v"
> done
var is abc
var is def
var is ghij
Вы можете найти более широкий подход в этом решении, как пройти по списку, разделенному запятыми, и выполнить команду для каждой записи .
Примеры второго подхода:
$ 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 --