Установка и получение значений переменных
В командной оболочке bash, которая является оболочкой по умолчанию, используемой в Linux, вы можете установить переменную, используя общий синтаксис NAME = VALUE . Например, в командной строке вы можете ввести:
х = 5
И переменная с именем x будет установлена в числовое значение 5 . Имена переменных могут быть как в верхнем, так и в нижнем регистре, или их комбинацией, и они чувствительны к регистру. При установке переменной не должно быть пробелов между именем переменной, знаком равенства и значением.
Нет необходимости заранее объявлять переменную или указывать ее тип данных. Bash определяет тип переменной на основе ее значения.
Например, наша переменная также может содержать строку:
х = Hello
Для простой строки необязательно заключать строку в кавычки, но если строка содержит пробелы, вы должны заключить ее в двойные кавычки:
x = "Привет, мир!"
Чтобы получить значение вашей переменной, поставьте перед ним знак доллара. Например, чтобы просмотреть значение x с помощью команды echo, вы должны выполнить:
эхо $ х
Какие выводы:
Привет, мир!
Здесь происходит следующее: оболочка принимает значение вашей переменной и вставляет его в вашу команду. Вы можете ссылаться на переменную в любом месте вашей команды, даже внутри строки в двойных кавычках:
echo "$ x $ x Кто-нибудь меня слышит? Я сказал, $ x"
Привет, мир! Привет, мир! Кто-нибудь меня слышит? Я сказал: Привет, Мир!
Совет: Переменные интерпретируются только внутри строки, если вы используете двойные кавычки. Если вы используете одинарные кавычки, имя переменной будет интерпретировано буквально, без интерпретации:
echo '$ x $ x Кто-нибудь меня слышит? Я сказал, $ х '
$ x $ x Кто-нибудь меня слышит? Я сказал, $ х
Установка значения переменной для вывода команды
Чтобы установить значение вашей переменной для вывода определенной команды, используйте форму:
NAME = $ (COMMAND)
Например, если ваше имя пользователя «steven», то при запуске команды whoami будет возвращено значение steven . Вы можете установить это в переменную:
MyName = $ (Whoami)
echo $ myname
стивен
Вы можете сделать это для любой команды. Если команда принимает аргументы, вам не нужно заключать команду в кавычки. Все, что в скобках, будет выполнено командой:
x = "Привет, мир!"
х = $ (эхо $ х $ х $ х)
эхо $ х
Привет, мир! Привет, мир! Привет, мир!
Использование переменных в простом скрипте
Давайте посмотрим, как мы можем использовать переменную в простом скрипте резервного копирования. Допустим, вы хотите сделать резервную копию всего в каталогах документов в вашем домашнем каталоге. Скрипт заархивирует все в этом каталоге и любые содержащиеся в нем каталоги в архив tar, имя которого содержит текущую дату. Давайте сохраним резервные копии в каталоге с именем backups в вашем домашнем каталоге (предположим, что этот каталог уже существует. Если нет, вы можете запустить mkdir ~ / backups для его создания).
Откройте текстовый редактор и поместите этот текст в новый файл:
#! / bin / bash MYFILENAME = ~ / backups / documents-backup - $ (дата +% Y-% m-% d) .tar.gztar -czf $ OUTPUTFILE ~ / documents
Давайте посмотрим на каждую строку этого скрипта. Первая строка, #! / Bin / bash, объявляет скрипт как исполняемый файл и указывает, что его следует запускать с / bin / bash, который является исполняемым файлом командной оболочки bash. Примечание. Файл не будет исполняемым до тех пор, пока мы не изменим файл позже, но эта строка требуется в любом подходящем скрипте bash.
Вторая строка устанавливает переменную MYFILENAME, которая будет содержать имя архива, содержащего нашу резервную копию. Первая часть имени файла - это наш каталог резервных копий ~ / backups .
Примечание. Символ тильды ( ~ ) - это специальное имя каталога, которое всегда представляет наш домашний каталог.)
Далее у нас есть начало имени файла Documents-Backup- . Затем мы вставляем текущую дату, используя команду даты, символ плюс и строку формата даты % Y-% m-% d . Например, если бы дата была 23 февраля 2015 года, это вернул бы 2015-02-23 .
Наконец, мы используем расширение .tar.gz, которое является правильным расширением имени файла для сжатого gzip файла tar. Итак, если мы запустим этот скрипт 23 февраля 2015 года, значение MYFILENAME будет равно ~ / backups / documents-backup-2015-02-23.tar.gz . Если мы запустим его 7 мая 2015 года, значением будет ~ / backups / documents-backup-2015-05-07.tar.gz .
Третья строка - это команда, которая создает архив. Мы используем команду tar с опцией -czf, которая создаст ( c ) сжатый архив ( z ), используя указанное имя файла ( f ). Затем мы указываем имя файла архива, ссылаясь на переменную, которую мы создали в строке 2, OUTPUTFILE . Наконец, мы говорим tar, что мы хотим заархивировать: каталог ~ / documents .
Чтобы запустить скрипт, сохраните текстовый файл в своем домашнем каталоге (или в любом другом месте, которое вы предпочитаете) и присвойте ему подходящее имя, например, backup-my-docs . Нет необходимости давать ему расширение имени файла. Выйдите из текстового редактора и сделайте файл исполняемым с помощью команды chmod + x, например:
chmod + x ~ / backup-my-docs
Теперь вы можете запустить скрипт. Например, если скрипт находится в вашем рабочем каталоге, вы можете запустить его с помощью:
./backup-my-docs
Или, если он находится в вашем домашнем каталоге, вы можете запустить его из любого каталога с помощью команды:
~ / Резервное копирование мои-документы