Скриптовете Bash са полезни за автоматизиране на задачи и ще откриете, че са чудесни за създаване на прости приложения за команден ред. Bash shell интерпретира Bash скриптове, така че няма да е необходимо да инсталирате никакви зависимости, за да ги пишете и изпълнявате. Bash скриптовете също са преносими, тъй като повечето базирани на Unix операционни системи използват един и същ интерпретатор на обвивката.
Познаването на Bash скриптове е задължително за всеки разработчик, особено ако работите с Unix-базирани системи.
Променливи в Bash
Bash променливи са чувствителни към регистъра. За да декларирате променливи, използвайте знак за равенство (=) с името отляво и стойността отдясно:
STATE=Вашингтон
Стойността, която тази декларация присвоява ДЪРЖАВА е една дума. Ако имате нужда от интервали във вашата стойност, използвайте кавички около него:
STATE="Северна Аризона"
Ще трябва да използвате знак за долар ($) префикс към референтни променливи в други променливи или изрази:
STATE=Вашингтон
LOCATION="Моето местоположение е $STATE"
Отпечатване на стойности в Bash
Има няколко начина, по които можете да отпечатате променливи в Bash. Можете да използвате ехо команда за основен изход или C-стил printf команда за форматиране на низ.
STATE=Вашингтон
LOCATION="Моето местоположение е $STATE"
ехо$LOCATION
След деклариране на ДЪРЖАВА променлива, дефинира този скрипт МЕСТОПОЛОЖЕНИЕ чрез препратка към STATE. След това If използва ехо, за да отпечата крайната стойност на променливата LOCATION.
The printf ключовата дума ви позволява да използвате форматиращи глаголи за извеждане на данни. Глаголите за форматиране на низове са подобни на тези в C и Go, но с ограничени глаголи.
Глагол | Функционалност |
---|---|
%° С | отпечатва единични знаци |
%o | отпечатва осемдесетични числа |
%с | отпечатва низове, независимо от корпуса |
%х | отпечатва шестнадесетични малки букви |
%Х | отпечатва главни букви шестнадесетичен |
%д | отпечатва цели числа |
%e | отпечатва научна представа плава с малки букви |
%E | отпечатва научна идея плава с главни букви |
%f | отпечатва числа с плаваща запетая |
%% | отпечатва един символ за процент. |
Ето пример за използване на глагол с the печат ключова дума.
STATE=Лагос
printf „Моето местоположение е %s“ $STATE
The printf функция ще замести ДЪРЖАВА променлива в позицията на %с глагол и изходът ще бъде „Моето местоположение е Лагос“.
Можете да правите коментари в Bash с хеш или паунд (#) символ. Обвивката автоматично игнорира коментарите.
#!/bin/bash
# STATE=Вашингтон
# LOCATION="Моето местоположение е $STATE"
Няма многоредови коментари. Повечето IDE и текстови редактори ви позволяват да коментирате с клавишната комбинация Ctrl/Command + наклонена черта (/). Трябва да можете да използвате прекия път за създаване на множество едноредови коментари.
Получаване на потребителски данни в Bash
Подобно на много други езици за програмиране, вие можете да получавате информация от потребителя в Bash, за да направите вашите програми/скриптове по-интерактивни. Можете да използвате Прочети команда за изискване на въвеждане от потребителя.
Прочети отговор
В този случай, отговор променливата ще съдържа въведеното от потребителя при доставка.
echo "Какво искаш?: "
прочетете отговора
echo $response
Заявката за въвеждане от потребителя ще бъде на нов ред в горния пример.
Можете да добавите -н флаг към ехо оператор за печат, за да запази реда, където потребителят въвежда въвеждане.
echo -n "Какво искаш."
прочетете отговора
echo $response
Деклариране на масиви в Bash
Масиви в Bash са като повечето езици. Можете да декларирате променлива на масив в Bash, като посочите елементите в скоби.
Държави=('САЩ' 'Русия' 'Украйна', "Англия", "Тайван", "Китай")
Достъпът до масив чрез препратка към името на променливата ще извлече първия елемент. Можете да получите достъп до целия масив, като използвате знака звездичка като индекс.
echo ${Countries[*]}
Можете също така да посочите индекса на масива за достъп до конкретен елемент. Индексът на масив започва от нула.
ехо "${Държави[4]}"
Условни изрази в Bash
Bash предоставя условия за вземане на решения в програмите.
Ето анатомията на оператор if-else в Bash. Ще трябва да използвате точка и запетая, за да посочите края на условието.
ако [[ състояние ]]; тогава
ехо твърдение1
елиф [[условие]]; тогава
ехо твърдение2
друго [[условие]]; тогава
ехо твърдение3
фи
Трябва да сложите край на всеки ако изявление с фи ключова дума.
ако [ 1 == 2 ]; тогава
ехо един
елиф [ 2 == 3 ]; тогава#друго-ако
ехо две
друго [ 4 > 3 ];
ехо "правилно, 3"
фи
Можете да използвате case оператори във вашите Bash програми, като използвате случай ключова дума. Ще трябва да посочите модела, последван от завършващи скоби преди израза.
ГРАД=Лагос
случай$CITYв
"Вашингтон") # модел
ехо "Съединени Американски щати" # изявление
;; # край на случай
"Лагос" | "Абуджа")
ехо "Нигерия"
;;
"Йоханесбург" | "Кейп Таун")
ехо "Южна Африка"
;;
*) # шаблон по подразбиране
ехо "Антарктида" # оператор по подразбиране
;;
esac# край на изявлението на случая
Можете да определите регистъра по подразбиране, като използвате знака звездичка (*) като модел. Случаите трябва да завършват с esac ключова дума.
Цикли в Bash
В зависимост от нуждите ви можете да използвате цикъл while, диапазон for-цикъл или C-стил for цикъл за повтарящи се операции.
Ето пример за for-цикъл в стил C. For циклите трябва да завършват с Свършен и трябва да завършите оператора for с точка и запетая, последвана от направи ключова дума.
за ((a = 0; а < 10; а+2)); направи
ехо$a
Свършен
Диапазонът за цикъл е полезен за работа с файлове и много други операции. Ще трябва да използвате в ключова дума с диапазона for-цикъл.
за i в {1..7}; направи
ехо$1
Свършен
Ето един прост безкраен цикъл за демонстрация на Bash докато примки в действие.
име=1
докато [ 1 - 5 ] # докато 1 < 5
направи
ехо$име
Свършен
The -le в оператора на условието е двоичният оператор за по-малко от.
Функции в Bash
Нямате нужда от ключови думи, за да декларирате функции в Bash. Можете да декларирате функции с името и след това със скоби преди тялото на функцията.
печат_работна_директория() {
ехо$PWD#извикване на командата PWD от скрипта
}
ехо "Ти си в $(print_working_directory)"
Функциите могат да връщат променливи в Bash. Всичко, от което се нуждаете, е връщане ключова дума.
печат_работна_директория() {
връщане$PWD
}
The печат_работна_директория функцията връща работната директория на файла.
Можете да пишете скриптове на Shell на други езици
Bash не е единственият език, който можете да използвате, за да взаимодействате с обвивката на вашата операционна система или да създавате приложения от командния ред. Можете да използвате много други езици като Go, Python, Ruby и Rust.
Много операционни системи имат предварително инсталиран Python3 и Python е преобладаващ език. Ако имате нужда от още повече функционалност, отколкото могат да предложат Bash скриптовете, помислете за използването на Python.