Краткое введение в программирование на Bash - [2]
>$ ./hello.sh
>Hello World
Получилось! Это ваша первая программа! И хотя она скучная и не делает ничего полезного, она показывает как именно все работает. Просто запомните эту простую последовательность действий: напишите код, сохраните файл, сделайте его исполняемым с помощьюchmodи запустите.
Команды, команды и команды
Что именно делает ваша первая программа? Она печатает на экран слова «Hello World». Каким образом она это делает? Она использует команды. В нашей программе мы написали только одну команду —echo «Hello World». Что именно тут команда?echo. Эта программа принимает один аргумент и печатает его на экран.
Аргументом является все, что следует после ввода названия программы. В нашем случае«Hello World»это и есть аргумент, переданный команде echo. При вводе команды ls /home/, аргументом команды ls является /home. Ну и что это все означает? А означает это то, что если у вас есть программа, которая принимает какой-то аргумент и выводит что-то на экран, вы можете использовать ее вместо echo. Предположим, что у нас есть программа под названием foo. Эта программа будет принимать один аргумент (строку из слов) и печатать их на экран. Тогда мы можем переписать нашу программу вот так:
>#!/bin/bash
>foo "Hello World"
Сохраните ее, сделайте исполняемой и перезапустите ее[5]:
>$ ./hello
>Hello World
Точно такой же результат. Использовался ли тут какой-то уникальный код? Нет. Написали ли мы какую-то программу? Нет, если только вы не являетесь автором программы echo. Все, что вы сделали — просто встроили программу echoв наш скрипт и снабдили ее аргументом. Примером альтернативы использования команды echo в реальном программировании является команда printf, которая имеет больше возможностей, если вы знакомы с программированием на C. Ну и на самом деле, точно такой же результат можно было бы получить и без написания скрипта:
>$ echo "Hello World”
>Hello World
Написание скриптов на bash предлагает широкий спектр возможностей и этому легко научиться. Как вы только что могли видеть, вы используете другие команды Linux, чтобы писать ваши собственные скрипты. Ваша программа-оболочка представляет собой несколько других программ, собранных вместе для выполнения какой-либо задачи.
Другие полезные программы
Сейчас мы напишем программу, которая переместит все файлы в каталог, удалит его вместе с содержимым, а затем создаст это каталог заново. Это может быть сделано с помощью следующих команд[6]:
>$ touch file1
>$ mkdir trash
>$ mv file1 trash
>$ rm -rf trash
>$ mkdir trash
Вместо того, чтобы вводить это все в интерактивном режиме, напишем скрипт, выполняющий эти команды:
>#!/bin/bash
>touch file1
>mkdir trash
>mv file1 trash
>rm -rf trash
>mkdir trash
>echo “Файл удален!”
Сохраните его под именем clean.sh и теперь все, что нужно сделать — это запустить его. Он переместит все файлы в каталог, удалит его, создаст его заново каталог и даже напечатает сообщение об удалении файлов. Запомните, если вы обнаружите, что регулярно делаете нечто требующее набора одной и той же последовательности команд — это вполне можно автоматизировать написанием скрипта.
Комментарии
Комментарии помогают сделать ваш код более читабельным. Они не влияют на то, что выводит программа. Они написаны специально для того, чтобы вы их прочли. Все комментарии в Bash начинаются с хэш-символа #, за исключением первой строки (#!/bin/bash), имеющей специальное назначение. Первая строка — не комментарий. Возьмем для примера следующий код:
>#!/bin/bash
># Эта программа считает от 1 до 10:
>for i in 1 2 3 4 5 6 7 8 9 10; do
>echo $i
>done
Даже если вы пока не понимаете скрипты на Bash, вы сразу же поймете, что делает приведенный выше пример, благодаря комментарию. Комментирование кода — хорошая практика. Со временем вы поймете, что, если вам нужно будет поддерживать ваши скрипты, то при наличии комментированного кода — делать это станет легче.
Переменные
Переменные это просто «контейнеры», которые содержат некоторые значения. Создавать их нужно по многим причинам. Вам нужно будет как-то сохранять вводимые пользователем данные, аргументы или числовые величины. Например:
>#!/bin/bash
>x=12
>echo ”Значение переменной x - $x”
Здесь мы присвоили переменной x значение 12. Строка echo “Значение переменной х - $x”напечатает текущее значение x. При определении переменной не допускается наличие каких-то пробелов между именем переменной и оператором присваивания: «=». Синтаксис следующий:
имя_переменной=ее_значение.
Обращение к переменным выполняется с помощью префикса «$» перед именем переменной. Именно таким образом мы получаем доступ к значению переменной х с помощью команды echo $x.
Есть два типа переменных — локальные и переменные окружения. Переменные окружения устанавливаются системой и имеют специальной назначение. Обычно их значение может быть выведено с помощью команды echo. Например, если ввести:
>$ echo $SHELL
>/bin/bash
Вы получили имя оболочки, запущенной в данный момент. Переменные среды задаются в файле /etc/profile и в ~/.bash_profile. Команда echo может применяться для проверки текущего значения переменной.
Примечание:задание переменных среды подробно описано в этой статье —
Земля давно погибла вместе с солнечной системой, а человечество перебралось на Юплурий, где под куполом появился город. В нем выросло два брата, они стали исследователями и вместе со своей командой изучали планету. Хоктис был немного младше Гинвена, и именно ему было суждено столкнуться с одной из загадок нового дома. Но было ли это загадкой? Было ли это на самом деле? Что не так с Юплурием или с братьями? Может ли сон быть реальностью?
Жизнь до отъезда в США описана автором в мемурах "Моя наша жизнь". Прожив в США более 20 лет, автор на основании личного опыта сравнивает типичные жизненные ситуации, как они бы выглядели в США и России, особенности поведения, социальные аспекты и общее биополе обеих стран. При этом сравнивается только то, что поддается сравнению, без намерения ставить отметки, где лучше. Все фото – из архива автора.
Период испанских Габсбургов называют «Золотым веком Испании». В 1700 году со смертью Карла II Околдованного, одного из самых инфантильных, слабых и измученных болезнями императоров, золотой век закончился, пришедшая на его смену изнурительная война за испанское наследство разорила некогда великую империю. Сейчас мы постараемся ответить на следующие вопросы: Кто и почему “околдовал” императора Карла II? К чему приводят кровосмешения в родословной? Как бесплодный, инфантильный наследник престола развязал крупный европейский конфликт начала XVIII века?
Нетипичный сюжет! Вторая книга в трилогии "Единственная для эшра", которая входит в цикл "Эшры и Тени". Её жизнь разделилась на до и после. Арина изменилась — она больше не человек, но и не эшр. Но откуда способности к генерации льда? От чего они появляются и исчезают, когда им вздумается? Сможет ли она найти своё место в этой новой реальности? Тьма сгущается: виновник её кошмара всё ещё не найден, а во снах её уже поджидает новый враг. Кто он? Что ему нужно? Отчего она бежит от него, не в силах сопротивляться навеянному им ужасу.
Будущее, в котором наступил долгожданный мир, и человечество покоряет космос. Колонизируются далёкие Марс, Юпитер, Сатурн. Все равны, но все ли довольны? Человечество стремится к далёким звёздам, но понимает ли оно себя? И вот, в один из октябрьских дней, предвидя крупный кризис, американский делегат при Правительственном собрании Земли, предлагает спасительную резолюцию. Казалось, что может пойти не так спустя пять лет? Ничто… Но если вспомнить, чем выложена дорога в ад? Люди забыли своё прошлое полное великих ошибок, ошибок, которые надеялись помнить и не совершать вновь. Автор иллюстрации — Ольга Калинина.