LINUX.ORG.RU

Shell FOR loop


0

0

В общем, есть скрипт:

#!/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

не проверял но смысл моего предложения такой

fura13 ★★★
()
Ответ на: комментарий от fura13

Идею понял, спасибо !

roy ★★★★★
() автор топика
Ответ на: комментарий от sdio

К осжалению там, где это будет работать, перла нет. К тому же, это пишется не с нуля, а дописывается в существующем проекте.

roy ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.