LinuxForum.Fans
Тема

Как правильно составить шаблон на Bash' e

Автор: LLIo6oH 9 сообщений 3794 просмотров
#12007

Требуется написать программу, которая якобы принимает из коммандной строки пароль состоял обязательно из:
8 символов
чтобы были цифры
буквы
и знаки * "$ и так далее

я пишу

echo Enter your password
read pass
case $pass in
[0-9a-Z]*|????????)
echo correct
;;
esac


но он воспринимает и просто буквы и просто цивры, да и любые восьмизначные

собственно вопросы: как правильно написать шаблон исходя из условий
можно ли как то через if

#12109

надо чтобы было одновременно всё? Или как?

#12114

да чтоб все условия были ОБЯЗАТЕЛЬНО одновременно. то есть по сути строчка должна состоять ОБЯЗАТЕЛЬНО из букв цифр и знаков, но чтоб длинна не более 8

#12122

[console]
#!/bin/bash

echo "Enter pass"
read pass

# На длину проверка
if [[ ${#pass} -gt 8 ]]
then
echo "fail";
exit -1;
fi

echo "$pass" | grep -E "[0-9]"| grep -E "[a-Z]" | grep -E "[\&\^]" || echo "fail!!!";
[/console]
Так подойдёт?
В третий grep допишите свои символы которые вам нужны.

#12126

щас тестирую....

а можно case вложить в if ?

#12127

можно. У вас свой там наверное алгоритм.

#12129

что-то он мне не проходит сравнение кол-ва символов

А можете написать как по синтаксису правильно вложить

#12136

А как вы используете case? Как вы хотите сделать?

#12138

если условие

case $pass in
[a-z]*)


выполдняется, то проходим на следующее условие, которое

case $pass in
[0-9]*)


и так если все условия пройдут, то такой пароль может быть создан

ладно спасибо, что хоть так работает )))))

Еще раз спасибо, дальше уж сам под себя доработаю....

Войдите или зарегистрируйтесь, чтобы ответить.