Eksportowanie zmiennych bash

Eksportowanie zmiennych bash
Zrozumienie zmiennych w skorupce Bash jest niezbędne w pracy z Linuksem w profesjonalny sposób. Jest to jeden z kluczowych wymagań dotyczących programowania, a także osiągnięcia linii Certyfikatu Professional Institute (LPIC) poziomu 1 [2].

Wcześniej opublikowany artykuł Fahmida Yesmin [4] zawiera wspaniałe wprowadzenie do zmiennych Bash. Tutaj przyspieszamy i wyjaśniamy, jak deklarować zmienne w Bash w taki sposób, aby można je używać w innych środowiskach w systemie Linux i które odpowiednie skutki uboczne musisz wziąć pod uwagę.

Krótki opis Bash

Shell Bash został wydany po raz pierwszy w 1989 roku i został użyty jako domyślna powłoka logowania dla większości rozkładów Linuksa. Brian Fox napisał Bash jako powłokę Unix i język poleceń dla projektu GNU jako bezpłatnego wymiany oprogramowania dla Bourne Shell. Jest to akronim dla Bourne ponownie Shell. Bash jest w dużej mierze kompatybilny z cii i zawiera przydatne funkcje ze skorupy Korn Ksh i skorupa C Csh [6].

Podczas gdy system operacyjny GNU zapewnia inne powłoki, w tym wersję Csh, Bash to domyślna interaktywna powłoka. Został zaprojektowany z myślą o przenośności i obecnie działa na prawie każdej wersji UNIX Plus innych systemów operacyjnych [9].

Zmienne bash w skrócie

Zmienne są niezbędnymi elementami języków programowania. Są one odwoływane i manipulowane w programie komputerowym. Mówiąc najprościej, zmienne reprezentują nazwane komórki pamięci. To jest to samo w Bash jak w każdym języku programowania. Umożliwia nam to, jak ludzie i użytkownicy komputera przechowywanie wartości w „mózgu” komputera i znalezienie ich ponownie za pomocą przypisanej nazwy zmiennej.

Termin zmienna odnosi się do połączonej formy dwóch słów, i.mi., różni się + zdolne, co oznacza, że ​​jego wartość można zmienić i może być używane na wiele razy. W przeciwieństwie do tego, zmienne, których nie można zmienić, nazywane są stałymi. [10]

Tak długo, jak dostępna jest wystarczająca pamięć do twojego skryptu, możesz swobodnie tworzyć i używać zmiennych. Możesz je po prostu ustawić, definiując nazwę zmiennej, a następnie przypisując jej wartość. Zmienna nazwa w Bash może zawierać litery, cyfry i podkreślenia. Jego nazwę można rozpocząć od litery i podkreślenia tylko. Prawidłowe nazwy zmiennych są rozmiar, podatkowy i _Tax20, ale nie 5 lud.

Zmienna wartość w Bash może zawierać liczbę, pojedynczy znak, ciąg znaków lub listę elementów (o nazwie Array). Nie ma widocznego typu danych, a wewnętrzny typ danych zmiennej zostanie automatycznie wymyślony (lub wyprowadzony) po przypisaniu wartości. Ponadto nie ma potrzeby deklarowania zmiennej - przypisanie wartości do jej odniesienia utworzy zmienną automatycznie. Przykładowy skrypt bash poniżej pokazuje to dla przypisania ciągu i przypisanie numeru numerycznego.

#! /bin/bash
velcomEmessage = "Hello World!"
Echo $ WelcomeMessage
Cena = 145
Echo Cena

Nazywanie konwencji zmiennych BASH

Nie ma ustalonych zasad dotyczących pisowni nazw zmiennych, tylko konwencje. Te konwencje są używane:

  • Nazwy małych liter - zmienne, które są lokalne dla skryptu lub funkcji.
    Bez względu na to, czy przeliterowany przypadek Lower_Case/Snake [8], czy styl obudowy wielbłąda [7]. Powyższy przykład używa stylu obudowy wielbłąda.
  • Nazwy wielkich - stałe, zmienne środowiskowe, wbudowane zmienne powłoki.
    Należy pamiętać, że te zmienne mogą być już używane przez inne programy. Przykładami są $ ścieżka, $ lang, $ PWD, $ PS4 i $ Shell.

W przypadku globalnych firm informatycznych często współpracuje z przewodnikami stylowymi, aby zapewnić wspólny styl kodowania wśród firmy. Zobacz redakcję programistów dla IBM i Google Style Guide [3], aby uzyskać więcej informacji na temat konwencji, które przestrzegają.

Zmienna widoczność

Domyślnym przypadkiem jest to, że zmienna jest lokalnie związana z strukturą, funkcją, skryptem lub procesem i nie można jej uzyskać z zewnątrz. Poniższy przykład pokazuje to dla wiadomości zmiennej $, która należy do skryptu, i $ powitalne, które należy do funkcji OutputWelComemessage ().

#!/bin/bash
# Zdefiniuj zmienną wiadomość do skryptu
message = ”Witam, ponownie!"
OutptWelComemessage ()
# Zdefiniuj zmienną lokalną
Witamy = ”Hello!"
Echo $ mile widziane

OutputWelComemessage () # drukuje hello!
echo $ wiadomość # drukuje cześć, znowu!

Aby upewnić się, że wcześniej zdefiniowana zmienna o tej samej nazwie jest lokalnie związana, użyj słowa kluczowego lokalnego, jak pokazano następny. Bez słowa kluczowego lokalne przypisanie w wierszu 8 odnosi się do zmiennej zdefiniowanej na całym świecie o tej samej nazwie zdefiniowanej wcześniej.

#!/bin/bash
# Zdefiniuj zmienną wiadomość do skryptu
message = ”Witam, ponownie!"
OutptWelComemessage ()
# Zdefiniuj zmienną lokalną o tej samej nazwie
Lokalna wiadomość = ”Hello!"
echo $ wiadomość

OutputWelComemessage () # drukuje hello!
echo $ wiadomość # drukuje cześć, znowu!

Rozszerzenie zakresu zmiennej

Aby uczynić wewnętrzną zmienną widoczną dla innych procesów dziecięcych, potrzebny jest dodatkowy krok. Ten krok nazywa się eksportowaniem zmiennej. Bash oferuje wykorzystanie eksportu słów kluczowych, a następnie nazwy zmiennej. Poniższa lista pokazuje to dla zmiennej backuppath.

$ backuppath = ”/opt/backup/”
$ Export Backuppath

Polecenie eksportu to wbudowana powłoka, która służy do definiowania zmiennej jako tej, którą dziedziczy podwodne (powłoki odradzane z oryginału). Zmienne, które są eksportowane.

Drugą opcją jest deklarowanie zmiennej jako zmiennej środowiskowej od samego początku. Możesz to zrobić, używając Słowa kluczowego, a następnie opcji „-x” (więcej informacji o poleceniu DECLARE). Efekt jest podobny do polecenia eksportu, które zostało wprowadzone wcześniej.

$ declare -x backuppath = ”/opt/backup/”

Dziedziczyć po innych sesjach

Po wykonaniu programu automatycznie dziedziczy jego zmienne środowiskowe z procesu nadrzędnego. Na przykład, jeśli $ home jest ustawione na /root w rodzica, to zmienna $ $ home jest również ustawiona na /root.

Dalsze polecenia

Między innymi Linux ma przydatne polecenia i opcje, które odnoszą się do zmiennych. Pierwsze dwa nazywane są Env i Printenv. Wymieniają wszystkie zmienne środowiskowe.

Poniższy obraz pokazuje wyjście polecenia Env w terminalu uruchomionym w sesji x. Zawiera zmienne takie jak $ xterm (typ terminalu), $ Shell (program wywołany loginem i pokazuje /bin /bash dla ścieżki do interpretera bash), $ ls_colors (kolory, które są używane do wyróżnienia różnych plików Typy podczas dzwonienia LS) i $ Desktop_Session (obecne środowisko X Desktop).

Trzeci i czwarty to opcje polecenia eksportu --p i -n. -P jest skrót od drukowania i po prostu wyświetla wszystkie wyeksportowane zmienne w bieżącej powładzie za pomocą polecenia Declare.

$ eksport -p
Declare -x Desktop_Session = "xfce"
Declare -x display = ": 0"
Declare -x glade_catalog_path = ":"
Declare -x glade_module_path = ":"
Declare -x Glade_pixmap_path = ":"
Deklaruj -x home = "/home/frank"
Declare -x lang = "de_de.UTF-8 "

Opcja -n służy do rozliczenia zmiennej środowiskowej. Poniższa lista pokazuje to dla wcześniej zdefiniowanej zmiennej backuppath.

$ eksport -n backuppath

Wniosek

Bash jest bardzo sprytnym, ale czasem nieco złożonym środowiskiem. Zmienne kontrolują, w jaki sposób różne narzędzia oddziałują. Zmienne eksportowanie pomaga w komunikacji między procesami i jest łatwy w użyciu w życiu codziennym.

O Autorach

Jacqui Kabeta jest ekologiem, zapalonym badaczem, trenerem i mentorem. W kilku krajach afrykańskich pracowała w środowiskach IT i organizacjach pozarządowych.

Frank Hofmann jest programistą IT, trenerem i autorem i woli pracować z Berlina, Genewy i Kapsztadu. Współautor książki zarządzania pakietami Debian dostępna w DPMB.org

Linki i referencje

  • [1] Programowanie bash, zmienne, https: // tldp.org/howto/bash-prog-intro-howto-5.html
  • [2] Linux Professional Institute LPIC-1, https: // www.LPI.org/nasze certyfikacje/LPIC-1-Overview
  • [3] Przewodnik po stylu powłoki Google, nazwy zmiennych, https: // Google.github.IO/StyleGuide/Shellguide.HTML#S7-Naming-Conventions
  • [4] Fahmida Yesmin: Jak używać zmiennych w programowaniu bash, https: // linuxhint.COM/zmienne-programowanie/programowanie/
  • [5] The Bash Hackers Wiki, https: // wiki.Haciści bash.org/
  • [6] Bash, Wikipedia, https: // en.Wikipedia.org/wiki/bash_ (unix_shell)
  • [7] Camel Case, Wikipedia, https: // en.Wikipedia.org/wiki/camel_case
  • [8] Snake Case, Wikipedia, https: // en.Wikipedia.org/wiki/snake_case
  • [9] Co to jest bash. https: // www.gnu antylopa.org/oprogramowanie/bash/manual/html_node/co-is-bash_003f.html
  • [10] przy użyciu zmiennych w Bash https: // openSource.com/artykuł/19/8/za pomocą-noribles-bash
  • Zrozumienie elementów BASH programowania https: // www.Linuxjournal.COM/Content/Understanding-Bash-Elements Programming
  • Zmienne bash https: // www.Javatpoint.com/bash-noribles