operators_list=$'andrii,bogdan,eios,fre,kuz,pvm,sebastian,tester,tester2,vincent,ykosogon'
Итак, у вас есть строки, разделенные ,
.Вы можете сделать это несколькими способами:
- , используя массивы bash:
IFS=, read -a operators <<<$operators_list
for op in "${operators[@]}"; do
echo "$op"
done
Используя цикл while, как вы и хотели:
while IFS= read -d, -r op; do
echo "$op"
done <<<$operators_list
Использование xargs, потому что почему бы и нет:
<<<$operators_list xargs -d, -n1 echo
В случае IFS и считывателя delimeter: read
читает до тех пор, пока в качестве разделителя не будет указано -d
.Затем после того, как read
прочитал полную строку (обычно целую строку, поскольку разделителем по умолчанию является символ новой строки), затем строка разбивается на части, используя IFS
в качестве разделителя.Так что вы можете:
while IFS=: read -d, -r op1 op2; do
echo "$op1" "$op2"
done <<<"op11:op12,op12:op22"