The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Функция проверки спелинга"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Функция проверки спелинга"  +/
Сообщение от oleg_skat (ok) on 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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Функция проверки спелинга"  +/
Сообщение от oleg_skat (ok) on 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


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Функция проверки спелинга"  +/
Сообщение от pavlinux (ok) on 21-Ноя-14, 21:24 
> if [ $len -ge $min ] && [ $len -le $max ];

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Функция проверки спелинга"  +/
Сообщение от oleg_skat (ok) on 22-Ноя-14, 10:10 
>> if [ $len -ge $min ] && [ $len -le $max ];
> И чё, никто косяка не видит?

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

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру