Имя пользователя:
Пароль:
 

Название темы: select + if
Показать сообщение отдельно

Пользователь


Сообщения: 96
Благодарности: 2

Профиль | Отправить PM | Цитировать


Переписал в таком виде. Все if по-моему заканчиваются fi. Увы, я далеко не великий писатель скриптов, этой мой 3-4 скрипт за всё время. Где я ошибаюсь?
Выполняется код до этого момента:

if [ $REPLY2 = "y" ];
then
continue
else
exit 0
fi

Дальше прерывается. Такое чувство, что он не понимает ввод "y" и выполняет exit 0.



Код: Выделить весь код
#!/bin/sh

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


#Select menu
echo Where do you want to create virtual host?
select opt in "Apache2" "Apache1.3"; do


#If Apache2
if [ "$opt" = "Apache2" ]; then

echo -n "Enter pagename:"
read PAGENAME
echo -n "Page will be called $PAGENAME ?"
read REPLY2
if [ $REPLY2 = "y" ];
then
  continue
else
  exit 0
fi

BASEDIR=/srv/virtual_2/$PAGENAME
HOMEDIR=$BASEDIR/./html
TMPDIR=$BASEDIR/tmp
LOGDIR=$BASEDIR/logs
GROUP=www
SHELL=/bin/bash
SKEL=/etc/web_skel/index.html


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
elif [ "$opt" = "Apache1.3" ]; then
echo -n "Enter pagename:"
read PAGENAME1
echo -n "Page will be called $PAGENAME1?"
read REPLY2
if [ "$REPLY2" = "y" ];
then
  continue
else
  exit 0
fi

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

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 parameter
else
   clear
     echo You must enter 1 or 2

fi
done
Может быть я напрасно использую такую конструкцию?

Код: Выделить весь код
if [ "$opt" = "Apache2" ]; then
....
elif [ "$opt" = "Apache1.3" ]; then
....
else
   clear
     echo You must enter 1 or 2

fi

Отправлено: 16:53, 26-05-2010 | #5

Название темы: select + if