Доброго времени!
Хотел задать пару вопросов по нижеследующей функции. Функция используется в скрипте, создающем
клиентские почтовые сертификаты. Всё работает.... да только не нравится мне кое что, каряво как-то.Собственно, "?":
Какие иные варианты возможны для реализации данной задачи.
Хочется получить рекомендации, позитивную критику и советы.
Пинайте меня! Но по делу и аргументированно.
#!/bin/sh
.....
переменные
.....
check() {
if [ $# -eq 1 ]; then val1=0
else val1=1
fi
len=${#1} #Вот здесь мне не нравится..... как ещё можно получить кол-во аргументов?
#и здесь проверка громоздкая
if [ $len -ge $min ] && [ $len -le $max ]; then val2=0
else val2=1
fi
case ${1} in
*[!a-zA-Z0-9]*|"") val3=1;;
*) val3=0;;
esac
}
check $1
fin=1
while [ $fin -eq 1 ]
do
fin=0; a=0
for a in $val1 $val2 $val3 # как-то можно без for обойтись?
do
if [ $a -eq 0 ]; then
else fin=1; failure=1; echo; echo -e '\033[31mСледует использовать:\033[0m'; echo "${0##*/} username - БуКвЫ и цифры."; \
echo -e '\033[1mИмя пользователя:\033[0m'; read one && check $one && break;
fi
done
done