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