В общем, есть скрипт:
#!/bin/sh
items="a1 b2 c3 d4 e5 f6 g7 h8 i9"
for i in $items; do
echo $items
echo $i
[ "$i" = b2 ] && items=$(echo $items |sed -r s/d4\(' '\|$\)//) && echo "removed d4"
[ "$i" = f6 ] && items=$(echo $items |sed -r s/i9\(' '\|$\)//) && echo "removed i9"
echo
done
Смысл в том, что в цикле изменяется строка, по которой проходит цикл,
чтобы исключить некоторые элементы. Проблема в том, что цикл
обращается к переменной только один раз, когда начинает работу, т.к.
изменение значения переменной не влияет на ход выполнения. Можно это
как-то изменить? Или есть какое-то другое решение? В реальной задаче
в цикле вызываются функции, которые могут рекурсивно выполнить
дейтсвия над значением строки, и повторно их выполнять уже не надо
(записывать отработанные элементы в другую строку не очень хочется).
items=( a1 b2 c3 d4 e5 f6 g7 h8 i9 )
cx=0
# размер ${#items[*]}
while [ $cx -gt ${#items[*]} ]
do
че угодно
let cx=$cx+1 # или опять же че угодно
done
не проверял но смысл моего предложения такой