Публикуваната по-рано статия от Fahmida Yesmin [4] ви дава чудесно въведение в променливите на Bash. Тук стъпваме по-нататък и обясняваме как да декларирате променливи в Bash по такъв начин, че да можете да ги използвате в други среди на вашата Linux система и кои съответни странични ефекти трябва да вземете под внимание.
Кратко описание на Баш
Черупката Bash беше пусната за първи път през 1989 г. и се използва като обвивка за вход по подразбиране за повечето дистрибуции на Linux. Брайън Фокс написа Bash като UNIX черупка и команден език за проекта GNU като безплатен софтуер за замяна на черупката на Bourne. Това е съкращение от Bourne Again Shell. Bash е до голяма степен съвместим с ш и включва полезни функции от черупката на Korn ksh и черупката C csh [6].
Докато операционната система GNU предоставя други черупки, включително версия на csh, Bash е интерактивната обвивка по подразбиране. Проектиран е с мисъл за преносимост и в момента работи на почти всяка версия на UNIX плюс други операционни системи [9].
Баш променливи накратко
Променливите са основни компоненти на програмните езици. Те се препращат и манипулират в компютърна програма. Най-просто казано, променливите представляват име на клетки с памет. Това е същото в Bash, както във всеки език за програмиране. Това дава възможност на нас като хора и потребители на компютъра да съхраняваме стойности в „мозъка“ на компютъра и да ги намираме отново чрез зададеното име на променливата.
Терминът променлива се отнася до комбинирана форма от две думи, т.е.д., варира + може, което означава, че стойността му може да се променя и може да се използва няколко пъти. За разлика от това, променливите, които не могат да бъдат променяни, се наричат константи. [10]
Докато има достатъчно памет за вашия скрипт, можете свободно да създавате и използвате променливи. Можете просто да ги зададете, като дефинирате име на променлива и след това присвоите нейната стойност. Името на променлива в Bash може да включва букви, цифри и долни черти. Името му може да започне само с буква и долна черта. Валидни имена на променливи са размер, данък5 и _tax20, но не 5 правила.
Стойността на променлива в Bash може да съдържа число, единичен знак, низ от символи или списък с елементи (наречен масив). Той няма видим тип данни и вътрешният тип данни на променливата ще бъде автоматично разбран (или изведен) при присвояване на стойност. Освен това не е необходимо да се декларира променливата - присвояването на стойност на препратката ще създаде променливата автоматично. Примерът Bash скрипт по-долу демонстрира това за присвояване на низ и присвояване на числови номера.
#! / bin / bashwelcomeMessage = "Здравей, Свят!"
echo $ welcomeMessage
цена = 145
ехо $ цена
Конвенции за именуване на променливи на Bash
Няма фиксирани правила за изписване на имена на променливи, а само конвенции. Използват се тези конвенции:
- Имена с малки букви - променливи, които са локални за скрипт или функция.
Без значение дали пише с малки букви / калъф за змия [8], или стил с камила [7]. Примерът по-горе използва стил на камила. - Главни имена - константи, променливи на околната среда, вградени променливи на черупката.
Имайте предвид, че тези променливи може вече да се използват от други програми. Примери за това са $ PATH, $ LANG, $ PWD, $ PS4 и $ SHELL.
За глобалните ИТ компании е обичайно да работят с ръководства за стил, за да осигурят общ стил на кодиране сред компанията. Вижте редакцията за разработчици за IBM и ръководството на Google за стил [3] за повече информация относно конвенциите, които спазват.
Променлива видимост
Случаят по подразбиране е, че променлива е локално свързана със структура, функция, скрипт или процес и не може да бъде достъпна извън нея. Примерът по-долу показва това за променливата $ message, която принадлежи на скрипта, и $ welcome, която принадлежи към функцията outputWelcomeMessage ().
#!/ bin / bash# дефинирайте променливо съобщение към скрипта
message = ”Здравейте, отново!”
outputWelcomeMessage ()
# дефинирайте локална променлива
добре дошли = ”Здравейте!”
echo $ добре дошъл
outputWelcomeMessage () # печата Здравейте!
echo $ message # prints Здравейте, отново!
За да сте сигурни, че предварително дефинирана променлива със същото име е локално обвързана, използвайте ключовата дума local, както е показано по-нататък. Без ключовата дума local заданието в ред 8 би се отнасяло до глобално дефинираната променлива със същото име, дефинирано по-рано.
#!/ bin / bash# дефинирайте променливо съобщение към скрипта
message = ”Здравейте, отново!”
outputWelcomeMessage ()
# дефинирайте локална променлива със същото име
Локално съобщение = ”Здравейте!”
echo $ message
outputWelcomeMessage () # печата Здравейте!
echo $ message # prints Здравейте, отново!
Разширяване на обхвата на променлива
За да се направи вътрешна променлива видима за други дъщерни процеси, е необходима допълнителна стъпка. Тази стъпка се нарича експортиране на променлива. Bash предлага използването на ключовата дума export, последвано от името на променливата. Списъкът по-долу демонстрира това за променливата backupPath.
$ backupPath = ”/ opt / backup /”$ export backupPath
Командата за експортиране е вградена черупка, която се използва за дефиниране на променливата като такава, която наследява под-черупки (обвивки, породени от оригинала). Тогава променливите, които се експортират, могат да се четат и записват от повече от един процес.
Вторият вариант е да декларирате променливата като променлива на околната среда още от самото начало. Можете да направите това, като използвате ключовата дума declare, последвана от опцията “-x” (вижте [5] за повече информация относно командата за деклариране). Ефектът е подобен на командата за експортиране, въведена преди това.
$ declare -x BACKUPPATH = ”/ opt / backup /”Наследяване от други сесии
Когато изпълнявате програма, тя автоматично наследява променливите на своята среда от родителския процес. Например, ако $ HOME е зададено на / root в родителя, тогава променливата $ HOME на детето също е зададена на / root.
Допълнителни команди
Наред с други, Linux се предлага с полезни команди и опции, свързани с променливи. Първите две се наричат env и printenv. Те изброяват всички променливи на средата.
Изображението по-долу показва изхода на командата env в терминал, който се изпълнява в X сесия. Той съдържа променливи като $ XTERM (тип терминал), $ SHELL (програмата, която се извиква при влизане и показва / bin / bash за пътя към интерпретатора на Bash), $ LS_COLORS (цветовете, които се използват за подчертаване на различен файл типове при извикване на ls) и $ DESKTOP_SESSION (текущата работна среда на X).
Третият и четвъртият са опции на командата за експортиране - -p и -n. -p е съкратено от print и просто показва всички експортирани променливи в текущата обвивка с помощта на командата declare.
$ износ -pдекларирам -x DESKTOP_SESSION = "xfce"
декларирайте -x DISPLAY = ": 0"
декларира -x GLADE_CATALOG_PATH = ":"
декларирам -x GLADE_MODULE_PATH = ":"
декларира -x GLADE_PIXMAP_PATH = ":"
декларирайте -x НАЧАЛО = "/ начало / откровено"
декларирайте -x LANG = "de_DE.UTF-8 "
Опцията -n се използва за премахване на променлива на околната среда. Списъкът по-долу демонстрира това за предварително дефинираната променлива BACKUPPATH.
$ export -n BACKUPPATHЗаключение
Баш е много умна, но понякога и малко сложна среда. Променливите контролират как взаимодействат различните инструменти. Експортирането на променливи помага за комуникацията между процесите и е лесно за използване в ежедневието.
Относно авторите
Jacqui Kabeta е природозащитник, запален изследовател, треньор и ментор. В няколко африкански държави тя е работила в ИТ индустрията и средите на НПО.
Франк Хофман е ИТ разработчик, обучител и автор и предпочита да работи от Берлин, Женева и Кейптаун. Съавтор на книгата за управление на пакети Debian, достъпна от dpmb.орг
Връзки и справки
- [1] Bash програмиране, променливи, https: // tldp.org / HOWTO / Bash-Prog-Intro-HOWTO-5.html
- [2] Linux Professional Institute LPIC-1, https: // www.lpi.org / our-certifications / lpic-1-overview
- [3] Google Shell Style Guide, имена на променливи, https: // google.github.io / styleguide / shellguide.html # s7-конвенции за именуване
- [4] Fahmida Yesmin: Как да използвам променливи в Bash програмиране, https: // linuxhint.com / променливи-баш-програмиране /
- [5] The Bash Hackers Wiki, https: // wiki.баш хакери.организация /
- [6] The Bash, Wikipedia, https: // en.wikipedia.org / wiki / Bash_ (Unix_shell)
- [7] Случаят с камили, Уикипедия, https: // en.wikipedia.org / wiki / Camel_case
- [8] Змийско дело, Уикипедия, https: // en.wikipedia.org / wiki / Snake_case
- [9] Какво е Bash. https: // www.gnu.org / software / bash / manual / html_node / What-is-Bash_003f.html
- [10] Използване на променливи в Bash https: // opensource.com / article / 19/8 / using-variables-bash
- Разбиране на елементите на Bash при програмирането https: // www.linuxjournal.com / съдържание / разбиране-баш-елементи-програмиране
- Баш променливи https: // www.javatpoint.com / bash-променливи