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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

echo "\"false\" -- это истина." #+ и она истинна.

else

echo "\"false\" -- это ложь."

fi # "false" -- это истина.

echo

echo "Проверяется \"\$false\"" # Опять неинициализированная переменная.

if [ "$false" ]

then

echo "\"\$false\" -- это истина."

else

echo "\"\$false\" -- это ложь."

fi # "$false" -- это ложь.

# Теперь мв получили ожидаемый результат.

echo

exit 0

Упражнение.Объясните результаты, полученные в Пример 7-1.

if [ condition-true ]

then

command 1

command 2

...

else

# Необязательная ветка (можно опустить, если в ней нет необходимости).

# Дополнительный блок кода,

# исполняемый в случае, когда результат проверки -- "ложь".

command 3

command 4

...

fi

картинка 29Когда if и then располагаются в одной строке, то конструкция if должна завершаться точкой с запятой. И if , и then -- это зарезервированные слова. Зарезервированные слова начинают инструкцию, которая должна быть завершена прежде, чем в той же строке появится новая инструкция.

if [ -x "$filename" ]; then

Else if и elif

elif

elif-- это краткая форма записи конструкции else if. Применяется для построения многоярусных инструкций if/then.

if [ condition1 ]

then

command1

command2

command3

elif [ condition2 ]

# То же самое, что и else if

then

command4

command5

else

default-command

fi

Конструкция if test condition-trueявляется точным эквивалентом конструкции if [ condition-true ], где левая квадратная скобка [выполняет те же действия, что и команда test. Закрывающая правая квадратная скобка ]не является абсолютно необходимой, однако, более новые версии Bash требуют ее наличие.

картинка 30Команда test-- это встроенная команда Bash, которая выполняет проверки файлов и производит сравнение строк. Таким образом, в Bash-скриптах, команда test не вызывает внешнюю ( /usr/bin/test ) утилиту, которая является частью пакета sh-utils . Аналогично, [ не производит вызов утилиты /usr/bin/[ , которая является символической ссылкой на /usr/bin/test .

bash$ type test

test is a shell builtin

bash$ type '['

[ is a shell builtin

bash$ type '[['

[[ is a shell keyword

bash$ type ']]'

]] is a shell keyword

bash$ type ']'

bash: type: ]: not found

Пример 7-2. Эквиваленты команды test -- /usr/bin/test, [ ], и /usr/bin/[

#!/bin/bash

echo

if test -z "$1"

then

echo "Аргументы командной строки отсутствуют."

else

echo "Первый аргумент командной строки: $1."

fi

echo

if /usr/bin/test -z "$1" # Дает тот же рузультат, что и встроенная команда "test".

then

echo "Аргументы командной строки отсутствуют."

else

echo "Первый аргумент командной строки: $1."

fi

echo

if [ -z "$1" ] # Функционально идентично вышеприведенному блоку кода.

# if [ -z "$1" эта конструкция должна работать, но...

#+ Bash выдает сообщение об отсутствующей закрывающей скобке.

then

echo "Аргументы командной строки отсутствуют."

else

echo "Первый аргумент командной строки: $1."

fi

echo

if /usr/bin/[ -z "$1" # Функционально идентично вышеприведенному блоку кода.

# if /usr/bin/[ -z "$1" ] # Работает, но выдает сообщение об ошибке.

then

echo "Аргументы командной строки отсутствуют."

else

echo "Первый аргумент командной строки: $1."

fi

echo

exit 0

Конструкция [[ ]] более универсальна, по сравнению с [ ]. Этот расширенный вариант команды test перекочевал в Bash из ksh88 .

картинка 31Внутри этой конструкции не производится никакой дополнительной интерпретации имен файлов и не производится разбиение аргументов на отдельные слова, но допускается подстановка параметров и команд.

file=/etc/passwd

if [[ -e $file ]]

then

echo "Файл паролей найден."

fi

картинка 32Конструкция [[ ... ]]более предпочтительна, нежели [ ... ], поскольку поможет избежать некоторых логических ошибок. Например, операторы &&, ||, < и > внутри [[ ]] вполне допустимы, в то время как внутри [ ] порождают сообщения об ошибках.

картинка 33Строго говоря, после оператора if, ни команда test, ни квадратные скобки ( [ ] или [[ ]] ) не являются обязательными.

dir=/home/bozo

if cd "$dir" 2>/dev/null; then # "2>/dev/null" подавление вывода сообщений об ошибках.

echo "Переход в каталог $dir выполнен."

else

echo "Невозможно перейти в каталог $dir."

fi

Инструкция "if COMMAND" возвращает код возврата команды COMMAND.

Точно так же, условие, находящееся внутри квадратных скобок может быть проверено без использования оператора if.

var1=20

var2=22

[ "$var1" -ne "$var2" ] && echo "$var1 не равно $var2"

home=/home/bozo

[ -d "$home" ] || echo "каталог $home не найден."

Внутри (( )) производится вычисление арифметического выражения. Если результатом вычислений является ноль, то возвращается 1, или "ложь". Ненулевой результат дает код возврата 0, или "истина". То есть полная противоположность инструкциям testи [ ], обсуждавшимся выше.

Пример 7-3. Арифметические выражения внутри (( ))

#!/bin/bash

# Проверка арифметических выражений.

# Инструкция (( ... )) вычисляет арифметические выражения.

# Код возврата противоположен коду возврата инструкции [ ... ] !

(( 0 ))

echo "Код возврата \"(( 0 ))\": $?." # 1

(( 1 ))

echo "Код возврата \"(( 1 ))\": $?." # 0

(( 5 > 4 )) # true

echo "Код возврата \"(( 5 > 4 ))\": $?." # 0

(( 5 > 9 )) # false

echo "Код возврата \"(( 5 > 9 ))\": $?." # 1

(( 5 - 5 )) # 0

echo "Код возврата \"(( 5 - 5 ))\": $?." # 1

(( 5 / 4 )) # Деление, все в порядке

echo "Код возврата \"(( 5 / 4 ))\": $?." # 0

(( 1 / 2 )) # Результат деления < 1.

echo "Код возврата \"(( 1 / 2 ))\": $?." # Округляется до 0.

# 1

(( 1 / 0 )) 2>/dev/null # Деление на 0.

echo "Код возврата \"(( 1 / 0 ))\": $?." # 1

# Для чего нужна инструкция "2>/dev/null" ?

# Что произойдет, если ее убрать?

# Попробуйте убрать ее и выполнить сценарий.

exit 0

7.2. Операции проверки файлов

Возвращает true если...

-e

файл существует

-f

обычный файл (не каталог и не файл устройства)

-s

ненулевой размер файла

-d

файл является каталогом

-b

файл является блочным устройством (floppy, cdrom и т.п.)

-c

файл является символьным устройством (клавиатура, модем, звуковая карта и т.п.)

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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