|
Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » select + if |
|
select + if
|
Пользователь Сообщения: 96 |
Помогите пожалуйста разобраться. Пишу небольшой скриптик, который будет создавать виртуальных хосты для Apache. В начале он будет выводить в консоль 2 варианта на выбор: Apache2 или Apache1.3
В зависимости от выбора пользователя будет выполнятся своя часть скрипта. Собственно весь скрипт тут не важен, а интересна мне именно эта часть: echo Where do you want to create virtual host? select opt in "Apache2" "Apache1.3"; do if [ "$opt" = "Apache2" ]; then #Apache2 echo -n "Enter pagename:" read PAGENAME echo -n "Page will be called $PAGENAME ?" read REPLY2 if [ "$REPLY2" = "y" ]; then continue else exit 0 fi Дальше выполнение прерывается. Я подозреваю, что хитрость в каком-то конфликте между этими условиями if [ "$opt" = "Apache2" ]; и if [ "$REPLY2" = "y" ]; Но никак не могу понять, как заставить его работать. Если нужно, здесь весь скрипт. |
|
Отправлено: 15:17, 26-05-2010 |
Пользователь Сообщения: 96
|
Профиль | Отправить PM | Цитировать Переписал в таком виде, с кейсами. Теперь он вовсе не понимает функцию select. Ругается на ошибку синтаксиса из за последнего done. Если done убрать, ругается на то, что функция select не закрыта.
Конечно я могу сделать два отдельных скрипта для Apache1.3 и Apache2 - и будет работать. Но так хочется разобраться с select`ом! #!/bin/bash function dir { echo changing home directory permissions: echo $BASEDIR ... chown svn.www $BASEDIR echo $HOMEDIR ... mkdir $HOMEDIR chown svn.www $HOMEDIR chmod 755 $HOMEDIR mkdir $TMPDIR chown svn.www $TMPDIR chmod 1770 $TMPDIR mkdir $LOGDIR chown root.www $LOGDIR chmod 755 $LOGDIR cp $SKEL $HOMEDIR } function apache2 { echo echo creating webserver configuration ... sed s/XXXXXX/$PAGENAME/ < /etc/apache2/vserver.proto >$PAGENAME.http echo please review new server configuration for $PAGENAME sleep 2 vim $PAGENAME.http echo appending new configuration to apache configuration file cat $PAGENAME.http >>/etc/apache2/vhosts.d/vhosts.conf rm -i $PAGENAME.http } function apache1 { echo echo creating webserver configuration ... sed s/XXXXXX/$PAGENAME/ < /etc/apache1.3/vserver.proto >$PAGENAME.http echo please review new server configuration for $PAGENAME sleep 2 vim $PAGENAME.http echo appending new configuration to apache configuration file cat $PAGENAME.http >>/etc/apache1.3/httpd.conf rm -i $PAGENAME.http } #End functions BASEDIR2=/srv/virtual_2/$PAGENAME BASEDIR=/srv/virtual_1.3/$PAGENAME1 HOMEDIR=$BASEDIR/./html TMPDIR=$BASEDIR/tmp LOGDIR=$BASEDIR/logs GROUP=www SHELL=/bin/bash SKEL=/etc/web_skel/index.html #Select menu echo Where do you want to create virtual host? select opt in "Apache2" "Apache1.3"; do #If Apache2 case "$opt" in Apache1.3) echo -n "Enter pagename:" read PAGENAME echo -n "Page will be called $PAGENAME ?" read REPLY1 if [ $REPLY1 == "y" ]; then continue else exit 0 fi mkdir $BASEDIR #Functions for Apache2 dir apache2 #Apache2 restart echo restarting apache /etc/init.d/apache2 restart echo "Apache2 virtual host is done" exit ;; #If Apache1 Apache2) echo -n "Enter pagename:" read PAGENAME1 echo -n "Page will be called $PAGENAME1?" read REPLY2 if [ "$REPLY2" == "y" ]; then continue else exit 0 fi mkdir $BASEDIR #Functions for Apache1 dir apache1 #Apache1 restart echo restarting apache /etc/init.d/apache1.3 restart echo "Apache2 virtual host is done" ;; # If bad parametr *) echo $"Apache1.3 OR Apache2" exit 1 break done |
Последний раз редактировалось Endy1, 27-05-2010 в 12:04. Отправлено: 11:53, 27-05-2010 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Линуксоид-стакановец Сообщения: 2391
|
Профиль | Отправить PM | Цитировать case закрывается оператором esac. Его у вас нет, отсюда проблемы.
|
------- Отправлено: 13:03, 27-05-2010 | #12 |
Пользователь Сообщения: 96
|
Профиль | Отправить PM | Цитировать Цитата [mzd:
Но та же самая проблема, что была в IF всё равно осталась. if [ "$REPLY2" == "y" ]; После нажатия y - выполнения скрипта останавливается. Хм.. я понял, выполнения не останавливается. Но продолжается с неправильного места. По-моему снова с блока select. |
|
Последний раз редактировалось Endy1, 27-05-2010 в 14:52. Отправлено: 14:05, 27-05-2010 | #13 |
![]() Забанен Сообщения: 463
|
http://www.opennet.ru/docs/RUS/bash_...ide/x5210.html
break - тоже нужен в select |
Отправлено: 20:45, 27-05-2010 | #14 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Динамический Select | darksmoke | Вебмастеру | 1 | 06-04-2008 22:15 | |
Select с HTML кодом | vadimiron | Вебмастеру | 10 | 19-02-2007 11:34 | |
Тег <Select> | Scorpion666 | Вебмастеру | 12 | 25-12-2006 21:46 | |
тройной select | Вебмастеру | 12 | 10-04-2006 23:09 | ||
Вложенный SELECT в MySQL | LEXX2002 | Вебмастеру | 7 | 06-09-2005 00:07 |
|