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

if [ $string1 ] # Опустим оператор -n.

then

echo "Строка \"string1\" не пустая."

else

echo "Строка \"string1\" пустая."

fi

# Все работает прекрасно.

# Квадратные скобки -- [ ], без посторонней помощи определяют, что строка пустая.

# Тем не менее, хорошим тоном считается заключать строки в кавычки ("$string1").

#

# Как указывает Stephane Chazelas,

# if [ $string 1 ] один аргумент "]"

# if [ "$string 1" ] два аргумента, пустая "$string1" и "]"


echo


string1=initialized


if [ $string1 ] # Опять, попробуем строку без ничего.

then

echo "Строка \"string1\" не пустая."

else

echo "Строка \"string1\" пустая."

fi

# И снова получим верный результат.

# И опять-таки, лучше поместить строку в кавычки ("$string1"), поскольку...


string1="a = b"


if [ $string1 ] # И снова, попробуем строку без ничего..

then

echo "Строка \"string1\" не пустая."

else

echo "Строка \"string1\" пустая."

fi

# Строка без кавычек дает неверный результат!


exit 0

# Спвсибо Florian Wisser, за предупреждение.

Пример 7-7. zmost

#!/bin/bash


#Просмотр gz-файлов с помощью утилиты 'most'


NOARGS=65

NOTFOUND=66

NOTGZIP=67


if [ $# -eq 0 ] # то же, что и: if [ -z "$1" ]

# $1 должен существовать, но может быть пустым: zmost "" arg2 arg3

then

echo "Порядок использования: `basename $0` filename" >&2

# Сообщение об ошибке на stderr.

exit $NOARGS

# Код возврата 65 (код ошибки).

fi


filename=$1


if [ ! -f "$filename" ] # Кавычки необходимы на тот случай, если имя файла содержит пробелы.

then

echo "Файл $filename не найден!" >&2

# Сообщение об ошибке на stderr.

exit $NOTFOUND

fi


if [ ${filename##*.} != "gz" ]

# Квадратные скобки нужны для выполнения подстановки значения переменной

then

echo "Файл $1 не является gz-файлом!"

exit $NOTGZIP

fi


zcat $1 | most


# Используется утилита 'most' (очень похожа на 'less').

# Последние версии 'most' могут просматривать сжатые файлы.

# Можно вставить 'more' или 'less', если пожелаете.


exit $? # Сценарий возвращает код возврата, полученный по конвейеру.

# На самом деле команда "exit $?" не является обязательной,

# так как работа скрипта завершится здесь в любом случае,

построение сложных условий проверки

-a

логическое И (and)

exp1 -a exp2 возвращает true, если оба выражения, и exp1, и exp2 истинны.

-o

логическое ИЛИ (or)

exp1 -o exp2 возвращает true, если хотябы одно из выражений, exp1 или exp2 истинно.

Они похожи на операторы Bash && и ||, употребляемые в двойных квадратных скобках.

[[ condition1 && condition2 ]]

Операторы -o и -a употребляются совместно с командой test или внутри одинарных квадратных скобок.

if [ "$exp1" -a "$exp2" ]


Чтобы увидеть эти операторы в действии, смотрите Пример 8-3 и Пример 25-11.


7.4. Вложенные условные операторы if/then

Операторы проверки условий if/then могут быть вложенными друг в друга. Конечный результат будет таким же как если бы результаты всех проверок были объединены оператором &&.

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

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

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

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

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

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

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

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

Финансы / Программирование, программы, базы данных
C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT