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

* ) echo "Машина на другом типе процессора";;

esac

exit 0

Оператор case допускает использование шаблонных конструкций.

<p><strong>Пример 10-27. Простой пример сравнения строк</strong></p>

#!/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

<p><strong>Пример 10-28. Проверка ввода</strong></p>

#!/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

check_var $c

check_var $d

check_var $e

check_var $f

check_var # Вызов без параметра, что произойдет?

#

digit_check $g

digit_check $h

digit_check $i

exit 0 # Сценарий дополнен S.C.

# Упражнение:

# --------

# Напишите функцию 'isfloat ()', которая проверяла бы вещественные числа.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных