Я плохо знаю bush. Хочу написать скрипт который бы создавал виртуальные хосты для апача. Скрипт я написал все работает. Но потом появилась идея добавить возможность указывать алиасы к виртуальному хосту. Все это я планировал реализовать по соответствующим флагам.
Например:
addvhost -host example.dev -dir /home/domains/ -alias adm.example.loc
Такая идея возникла когда решил попробовать Yii2 advanced.
Сейчас есть такой скрипт:
#!/bin/bash
set -e
ME=`basename $0`
function printHelp() {
echo "Скрипт добавления виртуальных хостов"
echo
echo "Используйте: "$ME" с опциями:"
echo " -h имя виртуального хоста"
echo " -a алиас"
echo " -d путь до директории"
echo
exit 0;
}
function writeHost() {
echo $host
echo $alias
echo $path
тут само добавление и тд..
}
# Если скрипт запущен без аргументов, открываем справку.
if [ $# = 0 ]; then
printHelp
fi
while getopts "h:a:d:" opt;
do
case $opt in
h) host=$OPTARG;
writeHost
;;
a) alias=$OPTARG;
writeHost
;;
d) path=$OPTARG;
writeHost
;;
*) echo "Неправильный параметр";
echo "Для вызова справки запустите $ME -help";
exit 1
;;
esac
done
Собственно в чем проблема. если вызвать скрипт то в консоли будет следующее
garik@work ~ $ sudo addvhost1 -h text -d dddd -a alias
text
text
dddd
text
alias
dddd
т.е. getopts по циклу проходит и все параметры видны только когда очередь до aliasa доходит. Как это обойти, не пойму.. Может знает кто? или хотя-бы скажите куда двигаться? может вместо getopts есть что то более подходящее?
Сам скрипт нашел на хабре в какой то статье, просто немного под свои задачи адаптировать пытаюсь..