Похож на while с той лишь разницей, что в нем команды внутри цикла выполняются тогда когда условие не выполняется. Синтаксис такой же только вместо while используется until.
Пример:
#!/bin/bash
i=1
until [ $i -gt 6 ]
do
echo "until $i"
i=$[$i+1] #или можно написать let i++
done
С циклами нужно быть аккуратными, чтобы не получить вариант бесконечного цикла. Кстати для отладки bash скриптов можно изменить первую строку на #!/bin/bash -x или запускать скрипт командой bash -x:
igor@ubuntu:~/linux$ bash -x ./testfor.sh
+ i=1
+ '[' 1 -gt 5 ']'
+ echo i=1
i=1
+ let i=i+1
+ '[' 2 -gt 5 ']'
+ echo i=2
i=2
+ let i=i+1
+ '[' 3 -gt 5 ']'
+ echo i=3
i=3
+ let i=i+1
+ '[' 4 -gt 5 ']'
+ echo i=4
i=4
+ let i=i+1
+ '[' 5 -gt 5 ']'
+ echo i=5
i=5
+ let i=i+1
+ '[' 6 -gt 5 ']'