Все понял, огромное спасибо,
но вопрос по примеру все же остался, такое ощущение, что пример некорректно написан, не знаю, не пойму, почему именно так они написали этот пример
case "$1" in
"" ) lines=50;;
*[!0-9]*) echo "вы ввели не цифру или цифру с буквами";
* ) lines=$1;echo "вы ввели цифру, все ок";;
esac
изменил строчку на
*[^0-9]*) echo "вы ввели не цифру или цифру с буквами"; exit $E_WRONGARGS;;
Да, это решение (запись) правильное , но
Понимаете, если первый пример со строкой *[!0-9]* трактовать как любая цифра и "!" , то при вводе цифры из терминала он должен вывести это сообщение echo "вы ввели не цифру или цифру с буквами"; Но этого не происходит, выводится echo "вы ввели цифру, все ок";
ps скорее всего, это уж мои догадки , что восклицательный знак "!" эквивалентен знаку "^"