Вот несколько способов использования цикла while в сценарии оболочки, а также примеры кода:
Метод 1: базовый цикл while
#!/bin/bash
counter=0
while [ $counter -lt 5 ]
do
echo "Counter: $counter"
counter=$((counter + 1))
done
Этот код будет выполнять цикл до тех пор, пока значение counterменьше 5. Он будет печатать текущее значение счетчика и увеличивать его на 1 на каждой итерации.
Метод 2. Чтение входных данных до тех пор, пока не будет выполнено определенное условие
#!/bin/bash
input=""
while [ "$input" != "quit" ]
do
echo "Enter 'quit' to exit"
read -r input
echo "You entered: $input"
done
Этот скрипт будет продолжать читать вводимые пользователем данные до тех пор, пока пользователь не введет «выход». Он будет отображать вводимые пользователем данные на каждой итерации.
Метод 3. Использование условия на основе вывода команды
#!/bin/bash
service="httpd"
while pgrep -x "$service" >/dev/null
do
echo "$service is running"
sleep 5
done
echo "$service stopped"
В этом примере цикл while будет продолжать выполняться до тех пор, пока команда pgrep -x "$service"вернет статус успеха. Он будет печатать, что служба работает каждые 5 секунд, пока служба не перестанет работать.