<Предыдущая | Содержание: | Следующая>
Выход из цикла
bash предоставляет две встроенные команды, которые можно использовать для управления потоком программы внутри циклов. Команда break немедленно завершает цикл, и управление программой возобновляется со следующего оператора, следующего за циклом. Команда continue заставляет пропустить оставшуюся часть цикла, и управление программой возобновляется со следующей итерации цикла. Здесь мы видим версию программы while-menu, включающую как break, так и continue:
#! / Bin / Баш
# while-menu2: программа системной информации, управляемая меню. DELAY = 3 # Количество секунд для отображения результатов
пока правда; делать
Очистить
кошка << - _EOF_
Пожалуйста выберите:
1. Отображение системной информации
2. Отображение дискового пространства
3. Отображение использования домашнего пространства
0. Выйти
_EOF_
read -p "Ввести выделение [0-3]>"
если [[$ REPLY = ~ ^ [0-3] $]]; тогда если [[$ REPLY == 1]]; тогда
echo "Имя хоста: $ HOSTNAME" время работы
спать $ DELAY
продолжать
fi
если [[$ REPLY == 2]]; затем df -h
спать $ DELAY
продолжать
fi
если [[$ REPLY == 3]]; тогда
если [[$ (id -u) -eq 0]]; тогда
echo "Использование домашнего пространства (все пользователи)" du -sh / home / *
еще
#! / Bin / Баш
# while-menu2: программа системной информации, управляемая меню. DELAY = 3 # Количество секунд для отображения результатов
пока правда; делать
Очистить
кошка << - _EOF_
Пожалуйста выберите:
1. Отображение системной информации
2. Отображение дискового пространства
3. Отображение использования домашнего пространства
0. Выйти
_EOF_
read -p "Ввести выделение [0-3]>"
если [[$ REPLY = ~ ^ [0-3] $]]; тогда если [[$ REPLY == 1]]; тогда
echo "Имя хоста: $ HOSTNAME" время работы
спать $ DELAY
продолжать
fi
если [[$ REPLY == 2]]; затем df -h
спать $ DELAY
продолжать
fi
если [[$ REPLY == 3]]; тогда
если [[$ (id -u) -eq 0]]; тогда
echo "Использование домашнего пространства (все пользователи)" du -sh / home / *
еще
echo "Использование домашнего пространства ($ USER)" du -sh $ HOME
fi
спать $ DELAY
продолжать
fi
если [[$ REPLY == 0]]; затем сломать
fi
еще
echo "Неверная запись." спать $ DELAY
фи сделано
echo «Программа завершена».
echo "Использование домашнего пространства ($ USER)" du -sh $ HOME
fi
спать $ DELAY
продолжать
fi
если [[$ REPLY == 0]]; затем сломать
fi
еще
echo "Неверная запись." спать $ DELAY
фи сделано
echo «Программа завершена».
В этой версии скрипта мы настроили бесконечный цикл (тот, который никогда не завершается сам по себе), используя правда команда для предоставления статуса выхода для в то время как. С правда всегда будет выходить с нулевым статусом выхода, цикл никогда не закончится. Это удивительно обычная техника написания сценариев. Поскольку цикл никогда не завершится сам по себе, программист должен предоставить какой-либо способ выйти из цикла, когда придет время. В этом сценарии перерыв команда используется для выхода из цикла при выборе «0». В Продолжить Команда была включена в конец других вариантов сценария, чтобы обеспечить более эффективное выполнение. Используя продолжать, сценарий пропустит код, который не нужен, когда выделение будет идентифицировано. Например, если выбран и идентифицирован вариант «1», нет причин проверять другие варианты.