Краткое введение в программирование на 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 может применяться для проверки текущего значения переменной.
Примечание:задание переменных среды подробно описано в этой статье —
Я тут попал в другой мир... и знаете, что меня больше всего расстраивает? Тут нет гугла. А как бы было удобно... Эй, гугл, как расколдовать злую королеву если ты - инвалид-колясочник? Эй, гугл, как правильно проводить феминистскую революцию? Эй, гугл, как пользоваться летающим кораблем? Эй, гугл, рыцари какого клана самые лучшие? Но увы... гугла нет. Так что приходится справляться самостоятельно.
После ночи, проведённой с незнакомцем, жизнь Эмили круто меняется. Болезненная привязанность и странности окружают девушку со всех сторон и не дают спокойно жить. Тайны затягивают всё глубже, и уже нет возможности вырваться из западни. Кому верить: незнакомцу, после ночи с которым осталось непонятное, практически невозможное побороть притяжение или мужчине, что готов помочь разобраться во всех тайнах и странностях, творящихся в жизни Эмили? Неправильный выбор может стать роковым. Привычный мир рухнет в одночасье, когда раскроются тайны и станут известны истинные мотивы.
Соединенные Штаты, Китай, Великобритания, Россия, Европейский Союз. Больше этих некогда влиятельных сверхдержав не найти ни на одной карте мира. Много лет назад само существование жизни на планете было поставлено под угрозу. Города исчезали один за другим, становились историей, а цивилизованный мир таял. Так продолжалось, пока ученые не создали оружие, способное остановить нашествие врагов из параллельной вселенной, прозванных пожирателями. С тех пор на планете уцелели только три города.
Продолжение супергеройского романа «Психокинетики». Враг повержен, но враг — ложный. Теперь героям предстоит разобраться в хитросплетениях глобального заговора, частью которого они стали, и в себе самих. Очередные опасности. Новые способности. И одна угроза на всех.
Потомки библейских исполинов расселились по земле и живут среди нас. Постепенно, создавая семьи с обычными людьми, они измельчали до человеческих размеров. Борьба полов в семействах исполинов за право властвовать на планете не прекращалась и в двадцать первом веке. В их отношения вмешались силы небесные, пригрозив запустить программу перерождения человека в бесполое существо, способное рождаться на свет с эмбрионом своего единственного будущего ребёнка внутри. Когда и эта угроза не вразумила их, то силы небесные, под предлогом надвигающейся глобальной катастрофы на Земле, решили переселить их на антиземлю — планету Антихтон, движущуюся по одной орбите с Землёй, по другую сторону Солнца.