bash скрипт меню
Модератор: vadim64
-
- сержант
- Сообщения: 168
- Зарегистрирован: 2008-11-05 6:15:43
- Контактная информация:
bash скрипт меню
Люди пожалуйста напишите скрипт, при запуске которого ,
если нажать цифру "1", он выдавал на экран ifconfig,
если цифру "2", то выдавал top и.т.п,
а если нажать цифру "9", то пользователь попадает в консоль
если нажать цифру "1", он выдавал на экран ifconfig,
если цифру "2", то выдавал top и.т.п,
а если нажать цифру "9", то пользователь попадает в консоль
Последний раз редактировалось f_andrey 2009-10-18 8:08:21, всего редактировалось 1 раз.
Причина: "напишите скрипт" формулировка приемлима только для /dev/null
Причина: "напишите скрипт" формулировка приемлима только для /dev/null
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- мл. сержант
- Сообщения: 76
- Зарегистрирован: 2008-02-01 23:26:45
Re: bash скрипт меню
Код: Выделить всё
read comm
if [ $comm -eq 1 ] ; then
ifconfig
exit
else
if [ $comm -eq 2 ] ; then
top
exit
else
exit
fi
fi
-
- сержант
- Сообщения: 168
- Зарегистрирован: 2008-11-05 6:15:43
- Контактная информация:
Re: bash скрипт меню
Большое спасибо, но немного не понятно, как добавить 3,4,5 ? пробовал:
if [ $comm -eq 2 ] ; then
netstat -r
exit
не получается, ругается на "fi" (я в shell плохо разбераюсь)
if [ $comm -eq 2 ] ; then
netstat -r
exit
не получается, ругается на "fi" (я в shell плохо разбераюсь)
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: bash скрипт меню
мануал по шеллу почитайте...
http://www.lissyara.su/?id=1075
http://www.lissyara.su/?id=1075
Убей их всех! Бог потом рассортирует...
-
- сержант
- Сообщения: 168
- Зарегистрирован: 2008-11-05 6:15:43
- Контактная информация:
Re: bash скрипт меню
Все сделал
-
- майор
- Сообщения: 2684
- Зарегистрирован: 2007-09-25 10:20:59
- Откуда: Сочи, Москва
- Контактная информация:
Re: bash скрипт меню
может теме в скриптах место?
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru
http://www.itforum-sochi.ru
-
- сержант
- Сообщения: 168
- Зарегистрирован: 2008-11-05 6:15:43
- Контактная информация:
Re: bash скрипт меню
Вроде создал в скриптах, но перенесли...
-
- майор
- Сообщения: 2684
- Зарегистрирован: 2007-09-25 10:20:59
- Откуда: Сочи, Москва
- Контактная информация:
Re: bash скрипт меню
f_andrey как из Киева с конференции приехал, сердитый стал
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru
http://www.itforum-sochi.ru
-
- проходил мимо
Re: bash скрипт меню
и после каждого выбора надо нажимать Enter?rainy писал(а):read comm
read в sh(1) не умеет считывать посимвольно, но bash и zsh умеют
Код: Выделить всё
#! /usr/bin/env bash
declare -A comm desc
comm[1]='ifconfig -a' desc[1]='show network interfaces'
comm[2]='top' desc[2]='run top(1)'
comm[9]='bash' desc[9]='escape into shell'
comm[q]='exit' desc[q]='quit'
for key in ${!desc[@]}; do
echo $key \) ${desc[$key]}
done
while read -sn1 input; do
for key in ${!comm[@]}; do
if [[ $input == $key ]]; then
eval ${comm[$key]}
continue 2
fi
done
echo wrong choice: $input
done
Код: Выделить всё
$ ./menu.bash
q ) quit
1 ) show network interfaces
2 ) run top(1)
9 ) escape into shell
wrong choice: h
wrong choice: u
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_MTU>
ether 00:11:22:33:44:55
inet 1.2.3.4 netmask 0xffffffff broadcast 1.2.3.4
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
pflog0: flags=141<UP,RUNNING,PROMISC> metric 0 mtu 33152
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
-
- проходил мимо
Re: bash скрипт меню
добавить новый пункт в меню можно добавив новое определение элемента comm и desc, напр.и вуаля, получаем новое меню
Код: Выделить всё
comm[3]='netstat -r' desc[3]='show routing table'
Код: Выделить всё
$ ./menu.bash
q ) quit
1 ) show network interfaces
2 ) run top(1)
3 ) show routing table
9 ) escape into shell
-
- сержант
- Сообщения: 168
- Зарегистрирован: 2008-11-05 6:15:43
- Контактная информация:
Re: bash скрипт меню
как бы такое дело через sh организовать и запретить останавливать скрипт через ctrl+c
- manefesto
- Группенфюррер
- Сообщения: 6934
- Зарегистрирован: 2007-07-20 8:27:30
- Откуда: Пермь
- Контактная информация:
-
- сержант
- Сообщения: 168
- Зарегистрирован: 2008-11-05 6:15:43
- Контактная информация:
Re: bash скрипт меню
точно, как я раньше та не догадался... Спасибо
-
- проходил мимо
Re: bash скрипт меню
в названии темы упоминается скрипт на bash. Если использовать убогий sh(1), то скрипт растолстеет в прожорливости и размере.levantuev писал(а):как бы такое дело через sh организовать
Если bash/zsh не подходит, то лучше использовать tcl/python/perl нежели сооружать гору костылей из awk/sed/grep в sh.
либо отключить обработку символов на сигналы в терминалеlevantuev писал(а): и запретить останавливать скрипт через ctrl+c
Код: Выделить всё
stty -isig
Код: Выделить всё
trap '' int