<Предыдущая | Содержание: | Следующая>
в то время как
bash может выразить аналогичную идею. Допустим, мы хотели отобразить пять чисел последовательно.
обычный порядок от одного до пяти. а колотить сценарий может быть построен следующим образом:
#! / Bin / Баш
# while-count: отображать серию чисел count = 1
а [[$ count -le 5]]; do echo $ count count = $ ((count + 1))
сделанный
эхо «Готово».
#! / Bin / Баш
# while-count: отображать серию чисел count = 1
а [[$ count -le 5]]; do echo $ count count = $ ((count + 1))
сделанный
эхо «Готово».
При выполнении этот сценарий отображает следующее:
[я @ linuxbox ~] $ подсчет
1
2
3
4
5
Законченный.
[я @ linuxbox ~] $ подсчет
1
2
3
4
5
Законченный.
Синтаксис в то время как команда является:
в то время как команды; делать команды; сделано
Подобно if, в то время как оценивает статус выхода списка команд. Пока статус выхода равен нулю, он выполняет команды внутри цикла. В приведенном выше сценарии переменная считать создается и ему присваивается начальное значение 1. в то время как команда оценивает статус выхода [[]] составная команда. Пока [[]] команда возвращает нулевой статус выхода, команды внутри цикла выполняются. В конце каждого цикла [[]] команда повторяется. После пяти итераций цикла значение считать увеличился до 6, [[]] команда больше не возвращает нулевой статус выхода, и цикл завершается. Программа переходит к следующему оператору, следующему за циклом.
Мы можем использовать в то время как цикл улучшить меню для чтения программа из предыдущей главы:
#! / Bin / Баш
# while-menu: информационная программа, управляемая с помощью меню.
#! / Bin / Баш
# while-menu: информационная программа, управляемая с помощью меню.
ЗАДЕРЖКА = 3 # Количество секунд для отображения результатов
а [[$ REPLY! = 0]]; делать
Очистить
кошка << - _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
еще
echo "Неверная запись."
спать $ DELAY
fi
сделанный
echo «Программа завершена».
ЗАДЕРЖКА = 3 # Количество секунд для отображения результатов
а [[$ REPLY! = 0]]; делать
Очистить
кошка << - _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
еще
echo "Неверная запись."
спать $ DELAY
fi
сделанный
echo «Программа завершена».
Заключив меню в цикл while, мы можем заставить программу повторять отображение меню после каждого выбора. Цикл продолжается до тех пор, пока оТВЕТИТЬ не равно «0», и меню отображается снова, давая пользователю возможность сделать другой выбор. В конце каждого действия спать выполняется команда, поэтому программа приостанавливается на несколько секунд, чтобы можно было увидеть результаты выбора, прежде чем экран очистится и снова отобразится меню. Один раз оТВЕТИТЬ равно «0», что указывает на выбор «выйти»,
цикл завершается, и выполнение продолжается со следующей строки сделанный.