# да, все символы являются прописными
return 0
fi }
При вызове функции is_upper укажите строковый аргумент. На примере показано, как вызывается функция.
echo -n "Enter the filename :"
read FILENAME
if ls_upper $FILENAME; then
echo "Great it's upper case" else
echo "Sorry it's not upper case" fi
Для проверки наличия в строке строчных символов просто замените существующую конструкцию awk а функции is_upper и измените имя функции на is_lower.
_IS_LOWER=`echo $1 |awk '{ if ($0~/[^a‑z] /) print "1"}`
Преобразование символов строки в строчные символы
В предыдущем разделе мы рассмотрели функцию str_to_upper, а теперь речь пойдет о функции str_to_lower. Вот код самой функции:
str_to_lower ()
#str_to_lower
#вызов: str_to_lower $1
{
#проверка на наличие корректных параметров
if [ $# -ne 1 ]; then
echo "str_to_lower: I need a string to convert please"
return 1
fi
echo $@ | tr '[A‑Z]' '[a~z]'
}
Переменная lower хранит возвращенное значение строки, содержащей строчные символы. Обратите внимание на повторное использование специального параметра $@ для передачи всех аргументов. Функция str_to_lower может быть вызвана двумя способами. Во–neрвых, можно указать строку в сценарии:
LOWER=`str_to_lower "documents.live"`
echo $LOWER
Альтернативный вариант — указать аргумент для функции вместо задания строки:
LOWER=`str_to_lower $1`
echo $LOWER
Определение длины строки
Проверка результата ввода в поле является общей задачей, выполняемой сценариями. Процесс проверки может включать множество частных задач, например определение того, является ли ввод числовым или только символьным. При этом также может проверяться формат либо длина поля.
Предположим, что имеется сценарий, в рамках которого пользователь вводит данные в поле имени с помощью интерактивного экрана. В этом случае часто возникает необходимость проверить, может ли поле включать лишь определенное количество символов, например 20 символов для ввода имени персоны. Ведь пользователю не так уж трудно ввести и 50 символов в это поле. Ниже приведен код функции, осуществляющей подобную проверку. Этой функции могут быть переданы два параметра: фактическая строка и максимально возможная длина строки.
Вот сама функция:
check_length()
#check_length
#вызов: check_length строка максимальная_длина_строки
{
_STR=$1
_МАХ=$2
# проверка на наличие корректных параметров
if [ $# -ne 2 ]; then
echo "check_length: I need a string and max length the string should be" return 1
fi
# проверка длины строки
_LENGTH=`echo $_STR |awk '{print length ($0)}'`
if [ "$_LENGTH" -gt "$_MAX" ]; then
# длина строки слишком велика
return 1
else
# строка имеет обычную длину
return О
fi }
Функция check length может быть вызвана следующим образом:
$ pg test_name
#!/bin/sh
# test name
while : do
echo -n "Enter your FIRST name :"
read NAME
if check_length $NAME 10
then break.
# ничего не происходит, если все условия выполнены else
echo "The name field ls too long 10 characters max"
fi
done
Цикл продолжает выполняться до тех пор, пока данные, вводимые для переменной NAME, меньше, чем значение переменной MAX (эта переменная содержит количество разрешенных символов; в данном случае речь идет о 10 символах). Команда break позволяет завершить выполнение цикла.
При использовании приведенного выше фрагмента кода, вывод будет следующим:
$ val_max
Enter your FIRST name :Pertererrrrrrrrrrrrrrr
The name field ls too long 10 characters max
Enter your FIRST name :Peter