Как разрешить ввод только аргументов в нижнем регистре в Bash - PullRequest
0 голосов
/ 19 февраля 2020

Я хочу разрешить ввод только нижнего регистра. Я пробовал [az], [az ^ AZ], а также [: lower:]. Но это не помогает.

Все выражения собираются в l oop, только если вся строка в верхнем регистре.

Пример:

Если 1. Демо --- Синтаксис действителен 2. Демо --- Синтаксис действителен 3. ДЕМО --- Синтаксис неверен

Но мне нужен недопустимый синтаксис, даже если ввод аналогичен примеру 1.

#!/bin/bash
client_name=$1

if [[ "$client_name" =~ [:lower:] ]]
        then
        echo " CLIENT Name Syntax is Valid"
        else
        echo -e "CLIENT Name Syntax is Invalid"  
        exit 01
fi 

Любое предложение будет высоко ценится. Спасибо

Ответы [ 3 ]

0 голосов
/ 19 февраля 2020

[[:lower:]] соответствует одному символу нижнего регистра. Следовательно, вы проверяете, содержит ли ваша строка символ нижнего регистра где-то.

Вам нужно найти, есть ли символ, который не символ нижнего регистра, и затем выполнить команду ошибка. Это можно сделать, например, с помощью

if [[ $client_name =~ [^[:lower:]] ]]
then 
  echo $client_name contains at least one non-lower case character
else
  echo OK
fi

. ^ отрицает элементы набора символов в регулярном выражении.

0 голосов
/ 19 февраля 2020

Или просто сделать их в нижнем регистре

$ test="ASDFasdaSDaDASDasdczXVSD"
$ echo ${test,,}
asdfasdasdadasdasdczxvsd
0 голосов
/ 19 февраля 2020

[: lower:] проверить, существуют ли строчные буквы, вместо этого используйте [: upper:]

client_name="Demo"

if [[ "$client_name" =~ [[:upper:]] ]]; then
  echo "uppercase character found"
else 
  echo "all lowercase"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...