Вы можете использовать сценарии Bash для автоматизации самых разных задач. Познакомьтесь с основами и начните свой путь программирования на Bash.
Сценарии Bash пригодны для автоматизации задач и отлично подходят для создания простых приложений командной строки.
Оболочка Bash интерпретирует сценарии Bash, поэтому вам не потребуется устанавливать какие-либо зависимости для их написания и выполнения. Сценарии Bash также являются переносимыми, так как большинство операционных систем на основе Unix используют тот же интерпретатор оболочки.
Знание сценариев Bash обязательно для каждого разработчика, особенно если вы работаете с системами на основе Unix.
Переменные в Bash
Переменные Bash чувствительны к регистру. Чтобы объявить переменные, используйте знак равенства (=) с именем слева и значением справа:
STATE=Washington
Значение, которое присваивается переменной STATE, представляет собой одно слово. Если вам нужны пробелы в вашем значении, используйте кавычки вокруг него:
STATE="North Arizona"
Для обращения к переменным в других переменных или выражениях вам нужно использовать знак доллара ($) перед именем:
STATE=Washington
LOCATION="My Location is $STATE"
Печать значений в Bash
Есть несколько способов печати переменных в Bash. Вы можете использовать команду echo
для базового вывода или команду форматирования строк printf
в стиле C для форматирования строк.
STATE=Washington
LOCATION="My Location is $STATE"
echo $LOCATION
После объявления переменной STATE этот сценарий определяет LOCATION, обращаясь к STATE. Затем он использует echo
, чтобы вывести конечное значение переменной LOCATION.
Ключевое слово printf
позволяет использовать глаголы форматирования для вывода данных. Глаголы форматирования строк аналогичны тем, что используются в языках C и Go, но с ограниченным количеством глаголов.
Команда | Функциональность |
---|---|
%c | выводит отдельные символы |
%o | выводит восьмеричные числа |
%s | выводит строки, независимо от регистра |
%x | выводит строчные шестнадцатеричные числа |
%X | выводит заглавные шестнадцатеричные числа |
%d | выводит целые числа |
%e | выводит числа в научной нотации в нижнем регистре |
%E | выводит числа в научной нотации в верхнем регистре |
%f | выводит числа с плавающей точкой |
%% | выводит одиночный знак процента. |
Вот пример использования глагола с ключевым словом printf
:
STATE=Lagos
printf "My Location is %s" $STATE
Функция printf
заменит переменную STATE на место глагола %s
, и вывод будет "My Location is Lagos".
Комментарии в Bash
Вы можете добавлять комментарии в Bash с помощью символа решетки (#). Оболочка автоматически игнорирует комментарии.
# STATE=Washington
# LOCATION="My Location is $STATE"
В Bash нет многострочных комментариев. В большинстве сред разработки и текстовых редакторов можно использовать сочетание клавиш Ctrl/Command + слэш (/) для добавления нескольких однострочных комментариев. Вы должны быть в состоянии использовать это сочетание клавиш для создания нескольких однострочных комментариев.
Получение ввода пользователя в Bash
Как и во многих других языках программирования, в Bash можно получать ввод пользователя для создания более интерактивных программ/сценариев. Для запроса ввода пользователя вы можете использовать команду read
.
read response
В этом случае переменная response
будет содержать ввод пользователя по доставке.
echo "Что вы хотите ?: "
read response
echo $response
Запрос ввода пользователя будет на новой строке в приведенном выше примере. Вы можете добавить флаг -n
к оператору echo
для сохранения строки, где пользователь вводит данные.
echo -n "Что вы хотите."
read response
echo $response
Объявление массивов в Bash
Массивы в Bash аналогичны многим другим языкам. Вы можете объявить массив в Bash, указав элементы в круглых скобках.
Countries=('USA' 'Ukraine' 'England' 'Taiwan' 'China')
Для доступа к массиву по ссылке на имя переменной можно извлечь первый элемент. Вы можете получить доступ ко всему массиву, используя знак астериска в качестве индекса.
echo ${Countries[*]}
Также можно указать индекс массива, чтобы получить доступ к конкретному элементу. Индекс массива начинается с нуля.
echo "${Countries[4]}"
Условные операторы в Bash
Bash предоставляет условия для принятия решений в программах.
Вот анатомия оператора if-else
в Bash. Вы должны использовать точку с запятой для указания конца условия.
if [[ условие ]]; then
echo statement1
elif [[ условие ]]; then
echo statement2
else [[ условие ]]; then
echo statement3
fi
Каждое условие if
должно завершаться ключевым словом fi
.
if [ 1 == 2 ]; then
echo one
elif [ 2 == 3 ]; then # иначе-если
echo two
else [ 4 > 3 ];
echo "правильно, 3"
fi
Вы можете использовать операторы case
в своих сценариях Bash с использованием ключевого слова case
. Вы должны указать шаблон, за которым следуют закрывающие скобки перед оператором.
CITY=Lagos
case $CITY in
"Washington") # шаблон
echo "Соединенные Штаты Америки" # оператор
;; # конец случая
"Lagos" | "Abuja")
echo "Нигерия"
;;
"Johannesburg" | "Cape Town")
echo "Южная Африка"
;;
*) # шаблон по умолчанию
echo "Антарктида" # оператор по умолчанию
;;
esac # конец оператора
Вы можете определить случай по умолчанию, используя символ астериска (*) в качестве шаблона. Операторы case
должны заканчиваться ключевым словом esac
.
Циклы в Bash
В зависимости от ваших потребностей вы можете использовать цикл while
, диапазонный цикл for
или цикл for
в стиле C для повторяющихся операций.
Вот пример цикла for
в стиле C. Циклы for
должны заканчиваться ключевым словом done
, и вы должны завершить оператор for
точкой с запятой, за которой следует ключевое слово do
.
for ((a = 0 ; a < 10 ; a+2)); do
echo $a
done
Диапазонный цикл for
пригоден для работы с файлами и многими другими операциями. Вам нужно использовать ключевое слово in
с диапазонным циклом for
.
for i in {1..7}; do
echo $1
done
Вот простой бесконечный цикл для демонстрации работы циклов while
в Bash.
name=1
while [ 1 -le 5 ] # пока 1 < 5
do
echo $name
done
В условном операторе -le
в условии является двоичным оператором "меньше".
Функции в Bash
Вам не нужны ключевые слова для объявления функций в Bash. Вы можете объявить функции с именем, а затем скобками перед телом функции.
print_working_directory() {
echo $PWD #вызов команды PWD из сценария
}
echo "Вы находитесь в $(print_working_directory)"
Функции могут возвращать переменные в Bash. Вам нужно всего лишь ключевое слово return
.
print_working_directory() {
return $PWD
}
Функция print_working_directory
возвращает рабочий каталог файла.
Вы можете писать сценарии оболочки на других языках
Bash - не единственный язык, который вы можете использовать для взаимодействия с оболочкой вашей операционной системы или создания приложений командной строки. Вы можете использовать множество других языков, таких как Go, Python, Ruby и Rust.
У многих операционных систем предустановлен Python3, и Python - распространенный язык. Если вам нужна даже большая функциональность, чем могут предложить сценарии Bash, рассмотрите возможность использования Python.
Добавить комментарий