Чтение онлайн

на главную - закладки

Жанры

Искусство программирования на языке сценариев командной оболочки

Купер Мендель

Шрифт:

Пример 10-27. Простой пример сравнения строк

#!/bin/bash

# match-string.sh: простое сравнение строк

match_string

{

MATCH=0

NOMATCH=90

PARAMS=2 # Функция требует два входных аргумента.

BAD_PARAMS=91

[ $# -eq $PARAMS ] || return $BAD_PARAMS

case "$1" in

"$2") return $MATCH;;

* ) return $NOMATCH;;

esac

}

a=one

b=two

c=three

d=two

match_string $a #

неверное число аргументов

echo $? # 91

match_string $a $b # не равны

echo $? # 90

match_string $b $d # равны

echo $? # 0

exit 0

Пример 10-28. Проверка ввода

#!/bin/bash

# isalpha.sh: Использование "case" для анализа строк.

SUCCESS=0

FAILURE=-1

isalpha # Проверка - является ли первый символ строки символом алфавита.

{

if [ -z "$1" ] # Вызов функции без входного аргумента?

then

return $FAILURE

fi

case "$1" in

[a-zA-Z]*) return $SUCCESS;; # Первый символ - буква?

* ) return $FAILURE;;

esac

} # Сравните с функцией "isalpha " в языке C.

isalpha2 # Проверка - состоит ли вся строка только из символов алфавита.

{

[ $# -eq 1 ] || return $FAILURE

case $1 in

*[!a-zA-Z]*|"") return $FAILURE;;

*) return $SUCCESS;;

esac

}

isdigit #

Проверка - состоит ли вся строка только из цифр.

{ # Другими словами - является ли строка целым числом.

[ $# -eq 1 ] || return $FAILURE

case $1 in

*[!0-9]*|"") return $FAILURE;;

*) return $SUCCESS;;

esac

}

check_var # Интерфейс к isalpha

{

if isalpha "$@"

then

echo "\"$*\" начинается с алфавитного символа."

if isalpha2 "$@"

then # Дальнейшая проверка не имеет смысла, если первй символ не буква.

echo "\"$*\" содержит только алфавитные символы."

else

echo "\"$*\" содержит по меньшей мере один не алфавитный символ."

fi

else

echo "\"$*\" начинсется с не алфавитного символа ."

# Если функция вызвана без входного параметра,

#+ то считается, что строка содержит "не алфавитной" символ.

fi

echo

}

digit_check # Интерфейс к isdigit .

{

if isdigit "$@"

then

echo "\"$*\" содержит только цифры [0 - 9]."

else

echo "\"$*\" содержит по меньшей мере один не цифровой символ."

fi

echo

}

a=23skidoo

b=H3llo

c=-What?

d=What?

e=`echo $b` # Подстановка команды.

f=AbcDef

g=27234

h=27a34

i=27.34

check_var $a

check_var $b

Поделиться:
Популярные книги

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

Хозяйка дома в «Гиблых Пределах»

Нова Юлия
Любовные романы:
любовно-фантастические романы
5.75
рейтинг книги
Хозяйка дома в «Гиблых Пределах»

Фиктивный брак

Завгородняя Анна Александровна
Фантастика:
фэнтези
6.71
рейтинг книги
Фиктивный брак

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Держать удар

Иванов Дмитрий
11. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Держать удар

Флеш Рояль

Тоцка Тала
Детективы:
триллеры
7.11
рейтинг книги
Флеш Рояль

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Зауряд-врач

Дроздов Анатолий Федорович
1. Зауряд-врач
Фантастика:
альтернативная история
8.64
рейтинг книги
Зауряд-врач

По дороге на Оюту

Лунёва Мария
Фантастика:
космическая фантастика
8.67
рейтинг книги
По дороге на Оюту

Мастер 5

Чащин Валерий
5. Мастер
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Мастер 5

Не лечи мне мозги, МАГ!

Ордина Ирина
Фантастика:
городское фэнтези
попаданцы
фэнтези
5.00
рейтинг книги
Не лечи мне мозги, МАГ!

Измена. Право на семью

Арская Арина
Любовные романы:
современные любовные романы
5.20
рейтинг книги
Измена. Право на семью

Крепость над бездной

Лисина Александра
4. Гибрид
Фантастика:
боевая фантастика
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Крепость над бездной

Неудержимый. Книга XXI

Боярский Андрей
21. Неудержимый
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Неудержимый. Книга XXI