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

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

Жанры

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

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

Шрифт:

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 могут быть вложенными друг в друга. Конечный результат будет таким же как если бы результаты всех проверок были объединены оператором &&.

if [ condition1 ]

then

if [ condition2 ]

then

do-something # Только если оба условия "condition1" и "condition2" истинны.

fi

fi

См. Пример 34-4 -- пример использования вложенных операторов if/then.

7.5. Проверка степени усвоения материала

Для запуска X-сервера может быть использован файл xinitrc. Этот файл содержит некоторое число операторов if/then. Ниже приводится отрывок из этого файла.

if [ -f $HOME/.Xclients ]; then

exec $HOME/.Xclients

elif [ -f /etc/X11/xinit/Xclients ]; then

exec /etc/X11/xinit/Xclients

else

# failsafe settings. Although we should never get here

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

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Измена. Отбор для предателя

Лаврова Алиса
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Измена. Отбор для предателя

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

Шаг в бездну

Муравьёв Константин Николаевич
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Шаг в бездну

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Хроники странного королевства. Вторжение. (Дилогия)

Панкеева Оксана Петровна
110. В одном томе
Фантастика:
фэнтези
9.38
рейтинг книги
Хроники странного королевства. Вторжение. (Дилогия)

Часовой ключ

Щерба Наталья Васильевна
1. Часодеи
Фантастика:
фэнтези
9.36
рейтинг книги
Часовой ключ

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

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

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

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9