Bash позволяет сопоставлять целые строки текста с отдельными переменными, упрощая его использование и написание сценариев. Как они работают и как их можно использовать? Давайте выясним.
Что такое переменная Bash?
Переменные — это легко запоминающиеся имена, которые могут содержать разные буквенно-цифровые значения. Они полезн
Contents
Что такое переменная Bash?
ну и ту же функцию к разным значениям без необходимости переписывать скрипт/фрагмент кода. Они также упрощают написание сценария/фрагмента кода, поскольку вместо работы с отдельными значениями вы можете использовать для всех них одно и то же имя.Переменные реального времени
Bash позволяет использовать переменные. Вы можете создавать переменные на лету и повторно использовать их во время текущего сеанса Bash. Они могут помочь вам использовать Bash разными способами и исчезнут после завершения текущего сеанса.
Предположим, вы посещаете несколько сайтов. Вы можете провести исследование или очистка данных и создать следующую переменную:
sitea=https://www.maketecheasier.com
firefox $sitea
Гораздо проще и читабельнее. Переменная $sitea
останется привязанной к сайту до тех пор, пока вы не измените ее содержимое вручную или пока не завершится сеанс Bash. И, конечно же, вы можете создать больше переменных, например siteb
, sitec
и sited
.
При настройке новых переменных вы можете использовать любые имена и хранить внутри них любые буквенно-цифровые строки. Однако имейте в виду, что по умолчанию они чувствительны к регистру. Таким образом, $sitea
не будет то же самое, что $SiteA
. Также обратите внимание, что при хранении строк со специальными символами внутри (включая пробелы) следует использовать кавычки.
Совет : для новичков в Bash начните с этих основные команды Bash .
Переменные в скриптах
Переменные в Bash более полезны при написании сценариев, поскольку они позволяют вам написать один сценарий, который затем может перебирать разные строки или воздействовать на настроенные фрагменты данных. Допустим, вы пишете сценарий, который каждый мог бы использовать на своем компьютере, но каждый раз отображал бы персонализированное приветствие. Без переменных вам пришлось бы писать разные версии скрипта для каждого пользователя. Используя переменные, вы сохраняете сценарий и меняете только имя пользователя.
Такой скрипт будет выглядеть примерно так:
#!/bin/bash username=Ramces echo $username
Приведенный выше пример может показаться излишним; однако по мере увеличения сложности кода переменные становятся незаменимыми. Сценарий может состоять из сотен или тысяч строк и содержать имя пользователя в разных местах. Чтобы лучше понять это, рассмотрим следующий несколько другой сценарий:
#!/bin/bash username=Linus echo Hello $username. This is a simple script I wrote that will repeat your name - that is, $username - often as an actual example of how to use Bash variables. I hope it will make it easier to understand how to use variables to improve your Bash workflow, $username. In this case, the variable username is mapped to your name. Whenever Bash runs into it, it replaces it with $username.
Приведенный выше сценарий будет использовать имя, определенное как переменная username
, для завершения текста. Если вы используете имя фактического пользователя, вам придется ввести его четыре раза, затем сделать то же самое для следующего пользователя и еще четыре раза для следующего. Опять и опять. Присвоив его переменной, вам нужно будет изменить его только один раз для каждого пользователя, и каждое упоминание имени пользователя в тексте будет обновлено.
Полезно знать : помимо переменных вы также можете использовать цикл for в Bash .
Постоянные переменные и псевдонимы Bash
Мы увидели, как можно временно устанавливать переменные и как, для более постоянного использования, включать их в свои собственные скрипты. Вы также можете навсегда установить переменные в Bash, отредактировав файл «~/.bashrc».
- Откройте файл «~/.bashrc» в вашем любимом текстовом редакторе.
nano ~/.bashrc
- Мы предлагаем вам начать с тестового запуска, добавив только одну переменную, чтобы вы знали, где искать, если процесс не сработает. Перейдите в конец файла и в новой строке добавьте переменную.
myname="Ramces Red"
- Сохраните файл и выйдите из редактора. Твики не будут применены немедленно. Введите в терминал следующее, чтобы изменения вступили в силу:
source ~/.bashrc
- Используйте недавно установленную переменную в сеансе Bash:
echo $myname
Вы можете настроить столько переменных, сколько захотите, и значительно упростить свои ежедневные приключения в Bash.
Для дополнительного повышения производительности также стоит настроить другой тип переменных: псевдонимы. В отличие от типичных переменных, которые сопоставлены с данными, которые можно использовать в командах, вместо реальных команд используются псевдонимы.
Подобно тому, как вы можете использовать простую для запоминания переменную для хранения длинных строк текста, вы можете использовать псевдонимы как простую альтернативу сложным командам. Вы можете использовать узнайте больше о них здесь , где мы превращаем всю команду сжатия 7zip в двухсимвольный псевдоним.
Наконец, даже если вы навсегда установили переменную в.bashrc, вы можете временно переназначить ей другое значение, как мы видели ранее. Переменная будет представлять новое содержимое до тех пор, пока текущий сеанс Bash не завершится (после выхода из системы или перезапуска) или до тех пор, пока вы не восстановите исходный код файла. bashrc .
Создание массивов
Хотя большинство пользователей Bash думают о переменных как о простой связи между фрагментом данных и меткой, их также можно использовать в качестве маркера для массивов. Это тип структуры данных, которая может хранить несколько значений в формате нумерованного индекса. Чтобы создать массив, выполните следующие действия:
- Создайте пустой скрипт оболочки:
nano array.sh
- Используйте субкоманду
declare
для инициализации массива Bash в текущем процессе оболочки.
Постоянные переменные и псевдонимы Bash
yarray- Заполните новый массив, используя встроенный оператор присваивания Bash. Например, следующая строка кода создает массив с пятью элементами внутри:
myarray=([0]=hello [1]=maketecheasier [2]=its [3]=an [4]=array)
- Проверьте, работает ли ваш новый массив, используя команду
echo
для извлечения из него данных:
echo ${myarray[1]}
Вы также можете передать содержимое массива в потоковом режиме, используя оператор «*»:
echo ${myarray[*]}
Выполнение переменных подоболочки
Одной из самых важных особенностей Bash является возможность создавать подоболочки, в которых программы могут выполняться так, как если бы они были базовыми функциями. Например, если написать ls -a
в сценарии оболочки и запустить его, все равно будет распечатано содержимое текущего рабочего каталога.
Хотя это может показаться ограниченным, Bash расширяет эту возможность, позволяя хранить выходные данные этих программ внутри переменных. Это позволяет вам использовать их в качестве входных данных для других программ внутри вашего скрипта.
- Чтобы использовать переменные подоболочки, сначала создайте пустой скрипт оболочки:
nano subshell.sh
<ол старт="2">
#!/bin/bash mysubshell=$(x) echo "The output of the variable is $mysubshell"
- Замените «x» на команду, которую вы хотите запустить и сохранить результат. Например, следующая команда получит содержимое файла world.txt и заменит слово «world» на «maketecheasier».
mysubshell=$(sed s/world/maketecheasier/g world.txt)
- Протестируйте новую переменную подоболочки, запустив новый скрипт:
chmod u+x ./subshell.sh bash ./subshell.sh
Манипулирование подстроками
Помимо хранения и извлечения данных вы также можете изменять содержимое переменных. В Bash есть набор операторов, которые вы можете присоединить в конце каждой переменной, что позволит вам точно настроить ваши скрипты без вызова каких-либо дополнительных программ.
- Создайте пустой скрипт оболочки:
nano substring.sh
- Напишите следующий шаблонный код внутри пустого скрипта:
#!/bin/bash mysubstring=hello.txt.old echo "My filename is: ${mysubstring}"
- Базовые манипуляции с подстроками существуют в трех формах. Во-первых, символ «#» принимает шаблон регулярного выражения, который оболочка удалит в начале переменной:
#!/bin/bash mysubstring=hello.txt.old echo "My filename is: ${mysubstring#*.}"
- Во-вторых, символ «%» также принимает шаблон регулярного выражения, который оболочка удалит в конце переменной:
#!/bin/bash mysubstring=hello.txt.old echo "My filename is: ${mysubstring%.*}"
- Bash также предоставляет возможность выборочного изменения содержимого переменной. Как и в программе
sed
, вы можете использовать символ «/» для поиска и замены любой строки внутри переменной:
#!/bin/bash mysubstring=hello.txt echo "My filename is: ${mysubstring/hello/maketecheasier}"
Полезно знать: регулярные выражения — важный инструмент в наборе инструментов каждого пользователя Linux. Узнайте, как достичь используйте его эффективно с помощью нашей простой в освоении шпаргалки .
Часто задаваемые вопросы
Можно ли запустить сценарий оболочки внутри переменной?
Да, указав полный путь к скрипту, который вы
Выполнение переменных подоболочки
(/home/ramces/.scripts/sample.sh)создаст подоболочку Bash и запустит сценарий sample.sh из моего домашнего каталога.Можно ли удалить переменную во время работы скрипта?
Да. Вы можете удалить переменную из запущенного процесса оболочки, вставив в скрипт субкоманду unset
, за которой следует имя переменной. Важно отметить, что выполнение этой команды не приведет к удалению каких-либо переменных, которые выполняются вне текущего процесса оболочки.
Можете ли вы использовать постоянную переменную внутри сценария внешней оболочки?
Да. Можно сослаться на значение переменной, объявленной вне текущего процесса оболочки. Однако вам также следует быть осторожными при использовании внешних переменных, поскольку их легко временно перезаписать.
Изображение предоставлено: Unsplash . Все изменения и скриншоты Рамсеса Реда.