Bash to popularny język skryptowy używany do automatyzacji zadań i pracy z interfejsem wiersza poleceń. Jedną z podstawowych cech BASH jest możliwość definiowania zmiennych, które można użyć do przechowywania wartości i przekazywania ich między różnymi poleceniami lub skryptami. Jednak podczas definiowania zmiennych w BASH należy jasno określić różnicę między zdefiniowaniem zmiennej ze słowem kluczowym Export lub bez.
Postępuj zgodnie z wytycznymi tego artykułu, aby dowiedzieć się, jak zdefiniować zmienną z eksportem lub bez eksportu.
Definiowanie zmiennej bez eksportu w BASH
Definiowanie zmiennej bez eksportu sprawia, że jest to zmienna lokalna, która jest dostępna tylko w bieżącej sesji powłoki lub skryptu, co oznacza, że zmienną nie można uzyskać przez procesy dziecięce lub skrypty, które są wywoływane z bieżącego skryptu. Zmienne lokalne są przydatne przy przechowywaniu wartości tymczasowych, które są potrzebne tylko w określonej części skryptu, powiedzmy, że masz skrypt, który definiuje zmienną wywoływaną My_var Bez eksportu:
#!/bin/bash
My_var = "Hello, Linux!"
Echo $ my_var
./child_script.cii
W tym przypadku, My_var jest zmienną lokalną i jest dostępna tylko w bieżącym skrypcie. Kiedy skrypt działa, drukuje "Cześć, Linux!" do konsoli, ale kiedy nazywa to scenariusz dziecięcy (./child_script.sh), skrypt dziecięcy nie może uzyskać dostępu do wartości My_var.
Na powyższym obrazie widać wyraźnie, że po wywołaniu skryptu dziecięcego nie jest dostępny do wartości zmiennej i zwraca pustą linię zamiast wyjścia pliku skryptu.
Definiowanie zmiennej z eksportem w Bash
Z drugiej strony zdefiniowanie zmiennej z słowem kluczowym eksportu sprawia, że jest to zmienna środowiskowa. Zmienne środowiskowe są dostępne dla wszystkich procesów dziecięcych, które są odrodzone z bieżącej sesji powłoki lub skryptu. Oznacza to, że zmienną można używać w różnych skryptach lub poleceń wywoływanych z bieżącego skryptu, więc rozważmy ten sam skrypt, ale z za pomocą My_var Zdefiniowane z eksportem:
#!/bin/bash
Eksport my_var = "Hello, Linux!"
Echo $ my_var
./child_script.cii
W tym przypadku, My_var jest zmienną środowiskową i jest dostępna dla wszystkich procesów dziecięcych, które są odrodzone z bieżącej sesji powłoki lub skryptu. Kiedy skrypt działa, drukuje "Cześć, Linux!" do konsoli, a kiedy nazywa to skrypt dziecięcy ./child_script.cii, Skrypt dziecięcy może uzyskać dostęp do wartości My_var.
Na powyższym obrazie widać wyraźnie, że po wywołaniu skryptu dziecięcego dostęp do wartości zmiennej i zwrócił wartość, która była „”Witam, Linux".
Notatka: Tutaj, w przykładowym kodzie, utworzyłem skrypt dziecięcy, który wywołuje zmienną w skrypcie głównym, więc oto kod powłoki dla skryptu dziecięcego: Ponadto musisz sprawić, że plik skryptu można wykonywać za pomocą „Chmod +x” polecenie, abyś mógł uruchomić skrypt.
#!/bin/bash
Echo $ my_var
Wniosek
Podczas pracy ze zmiennymi w BASH ważne jest zrozumienie zakresu zmiennej. Definiowanie zmiennej bez eksportu sprawia, że jest to zmienna lokalna, która jest dostępna tylko w bieżącej sesji powłoki lub skryptu, jednocześnie definiując zmienną z eksportem, czyni ją zmienną środowiskową, która jest dostępna dla wszystkich procesów dziecięcych z bieżącej sesji powłoki lub skryptu.