Краткое введение в программирование на Bash - [5]
>sleep 1
>done
Символ * имеет специальное значение, которое в данном случае означает «все в текущем каталоге», т.е. — все файлы в каталоге. Переменная file последовательно принимает значения, соответствующие именам файлов в текущем каталоге. Затем используется программа mv для переименования файла в файл с расширением .html:
case … in … esac
Оператор case очень похож на if. Он отлично подходит для тех случаев, когда нужно проверить несколько условий, и вы не хотите для этого использовать несколько вложенных операторов if. Поясним на примере:
>#!/bin/bash
>x=5 # инициализируем х значением 5
># проверяем значение х:
>case $x in
>0) echo "значение х равно 0"
>;;
>5) echo "значение х равно 5"
>;;
>9) echo "значение х равно 9"
>;;
>*) echo "значение неизвестно"
>;;
>esac
Оператор case проверяет переменную х на равенство трем значениям. В приведенном примере, он сначала проверит, равен ли х нулю 0, затем равен ли он 5, затем равен ли он 9. И, если все проверки завершились неудачно, скрипт выведет сообщение, что значение x определить не получилось. Помните, что «*» означает «все», и в этом случае, «любое другое значение, помимо указанных явно». Если х имеет любое другое значение, отличное от 0, 5 или 9, то это значение попадает во категорию «*». При использовании сase каждое условие должно заканчиваться двумя точками с запятой.
Зачем нужно использовать case, когда вы можно использовать if? Ниже приведен пример эквивалентного скрипта, написанного с использованием if. Решение о том, что быстрее написать и легче прочесть, предлагается принять самостоятельно:
>#!/bin/bash
>x=5 # инициализируем х значением 5
>if [ "$x" -eq 0 ]; then
>echo "Значение х равно 0"
>elif [ "$x" -eq 5 ]; then
>echo "значение х равно 5"
>elif [ "$x" -eq 9 ]; then
>echo "значение х равно 9"
>else
>echo "Значение х определить не удалось"
>fi
Использование кавычек
Кавычки играют важную роль в написании скриптов оболочки. Существует три типа кавычек. Это двойные кавычки: «, одинарные ‘ (апостроф) и обратные `[11]. Имеет ли каждый из приведенных видов какое-то особое значение? Да.
Примечание:Статья Wildcards, Quotes, Back Quotes, Apostrophes in shell commands ( * ? [] ” ‘ ‘) прекрасно описывает использование специальных символов. Пожалуйста, ознакомьтесь с ней в случае, если вы не знакомы с использованием этих специальных символов в скриптах оболочки. Ниже приведено краткое объяснение использования некоторых из них.
Двойные кавычки используются главным образом для объединения нескольких слов в строку и сохранения в ней пробелов. Например, «Эта строка содержит пробелы». Строка, заключенная в двойные кавычки рассматривается как единое целое. Например:
>$ mkdir hello world
>$ ls -F
>hello/ world/
Здесь мы создали две директории. Команда mkdir принимает два слова hello и world, как два отдельных аргумента, и поэтому создает два каталога. Теперь посмотрим, а что произойдет, если написать код таким образом:
>$ mkdir “hello world”
>$ ls -F
>hello/ hello world/ world/
Команда создала каталог с именем из двух слов. Кавычки объединили два слова в один аргумент[12].
Одинарные кавычки в основном используются для работы с переменными. Если переменная находится в двойных кавычках, то к ней можно обратиться через $имя_переменной. Если переменная находится в одинарных кавычках — это не возможно. Чтобы пояснить это приведем пример:
>#!/bin/bash
>x=5 # задаем х равным 5
># используем двойные кавычки
>echo "Используем двойные кавычки, значение х равно $х"
># используем одинарные кавычки
>echo 'Используем одинарные кавычки, значение х равно $х'
Почувствовали разницу? Вы можете использовать двойные кавычки, если вы не планируете использовать переменные для строки, которая в них находится. И да, если вам интересно, прямые кавычки также можно использовать для сохранения пробелов в строке тем же способом, что и двойные кавычки
>$ mkdir 'hello world'
>$ ls -F
>hello world/
Обратные кавычки сильно отличаются от двойных и одинарных. Они не могут использоваться для сохранения пробелов. Если вы помните, выше мы использовали такую строку:
>x=$(expr $x + 1)
Как вы уже знаете, результатом работы этой команды будет то, что выражение $х + 1 присваивается переменной x. Того же результата можно достичь и с использованием обратных кавычек:
>x='expr $x + 1′
Какой тип кавычек лучше использовать? Тот, что вам больше нравится. Изучая скрипты вы найдете, что обратные кавычки используются чаще, чем запись $(…) . Тем не менее, я считаю, $ (…) легче читать, особенно если у вас код наподобие этого:
>#!/bin/bash
>echo “I am 'whoami'”[13]
Это только начало. Вы узнаете еще много чего интересного в заключительной части этой статьи[14]. А пока вы ее ждете - удачного вам написания скриптов...
Оригинал статьи Гарольда Родригеса
Для тех, кому невтерпеж, и кто считает, что справится с большим пособием: Advanced Bash-Scripting Guide (на русском)
Часть II
В второй статье Гарольд продолжает свое первоклассное введение в программирование на bash. На этот раз он объясняет, как выполнять арифметические операции и определять функции в bash-скриптах. Завершается статья введением в такие понятия как чтение пользовательского ввода, обработка скриптом аргументов, перехватывание сигналов и обработка кодов завершения программ.
Земля давно погибла вместе с солнечной системой, а человечество перебралось на Юплурий, где под куполом появился город. В нем выросло два брата, они стали исследователями и вместе со своей командой изучали планету. Хоктис был немного младше Гинвена, и именно ему было суждено столкнуться с одной из загадок нового дома. Но было ли это загадкой? Было ли это на самом деле? Что не так с Юплурием или с братьями? Может ли сон быть реальностью?
Жизнь до отъезда в США описана автором в мемурах "Моя наша жизнь". Прожив в США более 20 лет, автор на основании личного опыта сравнивает типичные жизненные ситуации, как они бы выглядели в США и России, особенности поведения, социальные аспекты и общее биополе обеих стран. При этом сравнивается только то, что поддается сравнению, без намерения ставить отметки, где лучше. Все фото – из архива автора.
Период испанских Габсбургов называют «Золотым веком Испании». В 1700 году со смертью Карла II Околдованного, одного из самых инфантильных, слабых и измученных болезнями императоров, золотой век закончился, пришедшая на его смену изнурительная война за испанское наследство разорила некогда великую империю. Сейчас мы постараемся ответить на следующие вопросы: Кто и почему “околдовал” императора Карла II? К чему приводят кровосмешения в родословной? Как бесплодный, инфантильный наследник престола развязал крупный европейский конфликт начала XVIII века?
Нетипичный сюжет! Вторая книга в трилогии "Единственная для эшра", которая входит в цикл "Эшры и Тени". Её жизнь разделилась на до и после. Арина изменилась — она больше не человек, но и не эшр. Но откуда способности к генерации льда? От чего они появляются и исчезают, когда им вздумается? Сможет ли она найти своё место в этой новой реальности? Тьма сгущается: виновник её кошмара всё ещё не найден, а во снах её уже поджидает новый враг. Кто он? Что ему нужно? Отчего она бежит от него, не в силах сопротивляться навеянному им ужасу.
Будущее, в котором наступил долгожданный мир, и человечество покоряет космос. Колонизируются далёкие Марс, Юпитер, Сатурн. Все равны, но все ли довольны? Человечество стремится к далёким звёздам, но понимает ли оно себя? И вот, в один из октябрьских дней, предвидя крупный кризис, американский делегат при Правительственном собрании Земли, предлагает спасительную резолюцию. Казалось, что может пойти не так спустя пять лет? Ничто… Но если вспомнить, чем выложена дорога в ад? Люди забыли своё прошлое полное великих ошибок, ошибок, которые надеялись помнить и не совершать вновь. Автор иллюстрации — Ольга Калинина.