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

Тут можно читать онлайн Мендель Купер - Искусство программирования на языке сценариев командной оболочки - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Искусство программирования на языке сценариев командной оболочки
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3.7/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Искусство программирования на языке сценариев командной оболочки - описание и краткое содержание, автор Мендель Купер, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Данное руководство не предполагает наличие у читателя познаний в области программирования на языке сценариев, однако, быстро восполняет этот недостаток, постепенно, шаг за шагом раскрывая мудрость и красоту UNIX. Это руководство может рассматриваться как учебник, предназначенный для самостоятельного изучения или как справочник по программированию на shell. Руководство снабжено серией хорошо прокомментированных примеров, поскольку лучший путь к изучению языка сценариев -- это написание сценариев.

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

Искусство программирования на языке сценариев командной оболочки - читать книгу онлайн бесплатно, автор Мендель Купер
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

if [ "$a" \> "$b" ]

Обратите внимание! Символ ">" необходимо экранировать внутри [ ].

См. Пример 25-6 относительно применения этого оператора сравнения.

-z

строка "пустая", т.е. имеет нулевую длину

-n

строка не "пустая".

картинка 34Оператор -nтребует, чтобы строка была заключена в кавычки внутри квадратных скобок. Как правило, проверка строк, не заключенных в кавычки, оператором ! -z, или просто указание строки без кавычек внутри квадратных скобок (см. Пример 7-6), проходит нормально, однако это небезопасная, с точки зрения отказоустойчивости, практика. Всегда заключайте проверяемую строку в кавычки [ 18 ] Как указывает S.C., даже заключение строки в кавычки, при построении сложных условий проверки, может оказаться недостаточным. [ -n "$string" -o "$a" = "$b" ] в некоторых версиях Bash такая проверка может вызвать сообщение об ошибке, если строка $string пустая. Безопаснее, в смысле отказоустойчивости, было бы добавить какой-либо символ к, возможно пустой, строке: [ "x$string" != x -o "x$a" = "x$b" ] (символ "x" не учитывается). .

Пример 7-5. Операции сравнения

#!/bin/bash

a=4

b=5

# Здесь переменные "a" и "b" могут быть как целыми числами, так и строками.

# Здесь наблюдается некоторое размывание границ

#+ между целочисленными и строковыми переменными,

#+ поскольку переменные в Bash не имеют типов.

# Bash выполняет целочисленные операции над теми переменными,

#+ которые содержат только цифры

# Будьте внимательны!

echo

if [ "$a" -ne "$b" ]

then

echo "$a не равно $b"

echo "(целочисленное сравнение)"

fi

echo

if [ "$a" != "$b" ]

then

echo "$a не равно $b."

echo "(сравнение строк)"

# "4" != "5"

# ASCII 52 != ASCII 53

fi

# Оба варианта, "-ne" и "!=", работают правильно.

echo

exit 0

Пример 7-6. Проверка -- является ли строка пустой

#!/bin/bash

# str-test.sh: Проверка пустых строк и строк, не заключенных в кавычки,

# Используется конструкция if [ ... ]

# Если строка не инициализирована, то она не имеет никакого определенного значения.

# Такое состояние называется "null" (пустая) (это не то же самое, что ноль).

if [ -n $string1 ] # $string1 не была объявлена или инициализирована.

then

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

else

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

fi

# Неверный результат.

# Выводится сообщение о том, что $string1 не пустая,

#+не смотря на то, что она не была инициализирована.

echo

# Попробуем еще раз.

if [ -n "$string1" ] # На этот раз, переменная $string1 заключена в кавычки.

then

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

else

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

fi # Внутри квадратных скобок заключайте строки в кавычки!

echo

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

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Мендель Купер читать все книги автора по порядку

Мендель Купер - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


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


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x