Переменные в скриптах
Часть раздела Основы путешествия по Terminal на Coddy. Урок 68 из 82.
Переменные делают ваши скрипты гибкими и пригодными для повторного использования. Вместо жёсткого задания значений вы можете сохранять их в переменных и обращаться к ним по всему скрипту.
Чтобы создать переменную внутри скрипта, используй тот же синтаксис, который ты изучил для терминала: без пробелов вокруг знака равенства. Чтобы использовать значение переменной, добавь перед её именем знак доллара:
#!/bin/bash
greeting="Hello"
name="World"
echo "$greeting, $name!"Этот скрипт выводит Hello, World!. Переменные greeting и name хранят текст, который подставляется при выполнении скрипта.
Переменные становятся особенно полезными, когда нужно использовать одно и то же значение несколько раз. Если вы ссылаетесь на путь к файлу в нескольких местах, сохранение его в переменной означает, что вам нужно изменить его только один раз:
#!/bin/bash
backup_dir="/home/user/backups"
echo "Creating backup in $backup_dir"
mkdir -p "$backup_dir"Обрати внимание на кавычки вокруг "$backup_dir". Заключать переменные в двойные кавычки — хорошая практика, потому что это позволяет корректно обрабатывать пути или значения, содержащие пробелы. Без кавычек такой путь, как /my documents, нарушил бы выполнение команды.
Переменные в скриптах работают так же, как в терминале, но существуют только во время выполнения скрипта. После завершения скрипта эти переменные исчезают.
Задание
ЛегкоСоздай shell-скрипт с именем intro.sh, который использует переменные для вывода персонализированного сообщения.
Твой скрипт должен:
- Начинаться со строки shebang (
#!/bin/bash) - Создать переменную с именем
languageи значениемBash - Создать переменную с именем
skillи значениемscripting - Использовать
echoдля вывода обеих переменных в формате:Learning Bash scripting!
Сделай скрипт исполняемым и запусти его. Твой вывод должен быть таким:
Learning Bash scripting!Заключай каждую записываемую строку в одинарные кавычки:
echo 'echo "Hello $name"' >> script.sh. Одинарные кавычки не позволяют shell заменить$nameво время записи файла, поэтому скрипт сохраняет переменную и подставляет её значение при запуске. Двойные кавычки подставили бы значение сразу.
Подсказка: Создай скрипт с помощью
echoи перенаправления. Не забудь обратиться к переменным с помощью$в инструкции echo, напримерecho "Learning $language $skill!"
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Каталоги
Создать каталогСкопировать каталогПереместить и переименовать каталогУдалить каталогИтог - Операции с каталогами7Содержимое файлов
Head и TailПодсчёт словКоманда sortКоманда uniqОсновы grepGrep с флагамиПовторение - Текстовый детектив10Проект анализатора логов
Обзор проектаПросмотр файла лога13Основы скриптинга оболочки
Что такое скрипт оболочкиСоздание и запуск скриптаПеременные в скриптахПользовательский ввод в скриптахОператор ifЦикл forЦикл whileИтог - Угадай число2Навигация
Вывод текущей рабочей директорииСписок файловСмена директорииАбсолютные и относительные путиДомашняя и корневая директорииИтог - Найди свой путь8Перенаправление
Стандартный выводПерезапись в файлДописывание в файлСтандартный вводСтандартная ошибкаПовторение - Сборщик логов11Права доступа
Понимание прав доступаЧтение прав доступаChmod с числамиChmod с символамиВладение файламиПовторение - Заблокируйте доступ14Проект скрипта резервного копирования
Обзор проектаПолучение пути к источнику3Файлы
Создать файлПрочитать файлСкопировать файлПереместить и переименовать файлУдалить файлПовторение - Операции с файлами6Символы подстановки и шаблоны
Звёздный символ подстановкиВопросительный символ подстановкиСкобочные символы подстановкиКомбинирование символов подстановкиПовторение - выборочные операции9Каналы
Что такое каналЦепочка двух командЦепочка нескольких командКанал с grepИтог - Конвейер данныхПотренируйтесь самостоятельно: Песочница Terminal