URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9942
[ Назад ]

Исходное сообщение
"Функция проверки спелинга"

Отправлено oleg_skat , 20-Ноя-14 16:55 
Доброго времени!
Хотел задать пару вопросов по нижеследующей функции. Функция используется в скрипте, создающем
клиентские почтовые сертификаты. Всё работает.... да только не нравится мне кое что, каряво как-то.

Собственно, "?":
Какие иные варианты возможны для реализации данной задачи.
Хочется получить рекомендации, позитивную критику и советы.

Пинайте меня! Но по делу и аргументированно.

#!/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


Содержание

Сообщения в этом обсуждении
"Функция проверки спелинга"
Отправлено oleg_skat , 20-Ноя-14 22:08 
Поясню, имел ввиду следующее:

Проверка кол-ва аргументов: (т.е имя юзера д.б. из одного слова)

>if [ $# -eq 1 ]; then val1=0  
>       else val1=1
>fi
> len=${#1}  Кол-во символов аргумента (слова).

Иначе никак?

Вместо for можно так:

sum = $val1+$val2+$val3
if [ $sum -eq 0 ]; then
    else
     .................
fi



"Функция проверки спелинга"
Отправлено pavlinux , 21-Ноя-14 21:24 
> if [ $len -ge $min ] && [ $len -le $max ];

И чё, никто косяка не видит?


"Функция проверки спелинга"
Отправлено oleg_skat , 22-Ноя-14 10:10 
>> if [ $len -ge $min ] && [ $len -le $max ];
> И чё, никто косяка не видит?

По подробнее пожалуйста.
Если $len больше или равно $min "И" $len меньше или равно $max ; Хотя бы один фолс - возвратит фолс,  если первый фолс, второй не проверяется ...  обычная бинарная конъюнкция
Что не верно?