Требуется написать программу, которая якобы принимает из коммандной строки пароль состоял обязательно из:
8 символов
чтобы были цифры
буквы
и знаки * "$ и так далее
я пишу
echo Enter your password
read pass
case $pass in
[0-9a-Z]*|????????)
echo correct
;;
esac
но он воспринимает и просто буквы и просто цивры, да и любые восьмизначные
собственно вопросы: как правильно написать шаблон исходя из условий
можно ли как то через if
Как правильно составить шаблон на Bash' e
надо чтобы было одновременно всё? Или как?
да чтоб все условия были ОБЯЗАТЕЛЬНО одновременно. то есть по сути строчка должна состоять ОБЯЗАТЕЛЬНО из букв цифр и знаков, но чтоб длинна не более 8
[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 допишите свои символы которые вам нужны.
щас тестирую....
а можно case вложить в if ?
можно. У вас свой там наверное алгоритм.
что-то он мне не проходит сравнение кол-ва символов
А можете написать как по синтаксису правильно вложить
А как вы используете case? Как вы хотите сделать?
если условие
case $pass in
[a-z]*)
выполдняется, то проходим на следующее условие, которое
case $pass in
[0-9]*)
и так если все условия пройдут, то такой пароль может быть создан
ладно спасибо, что хоть так работает )))))
Еще раз спасибо, дальше уж сам под себя доработаю....