Czym są zmienne Bash i jak można ich używać?

Czym są zmienne Bash i jak można ich używać?

Bash umożliwia mapowanie całych ciągów tekstu na pojedyncze zmienne, upraszczając jego użycie i pisanie skryptów. Jak działają i jak możesz z nich korzystać? Dowiedzmy Się.

Co to jest zmienna Bash?

Zmienne to łatwe do zapamiętania nazwy, które mogą zawierać różne wartości alfanumeryczne. Są przydatne, ponieważ umożliwiają zastosowanie tej samej funkcji do różnych wartości bez konieczności przepisywania skryptu/kawałka kodu. Ułatwiają również pisanie skryptu/fragmentu kodu, ponieważ zamiast zajmować się poszczególnymi wartościami, możesz użyć tej samej nazwy dla wszystkich.

Zmienne czasu rzeczywistego

Bash pozwala na użycie zmiennych. Możesz tworzyć zmienne w locie i wykorzystywać je ponownie podczas bieżącej sesji Bash. Mogą pomóc w korzystaniu z Bash na wiele różnych sposobów i znikną po zakończeniu bieżącej sesji.

Załóżmy na przykład, że odwiedzasz kilka witryn. Możesz przeprowadzać badania lub zbierać dane i utworzyć następującą zmienną:

sitea=https://www.maketecheasier.com

Terminal pokazujący podstawowe przypisanie zmiennej.

Następnie, jeśli chcesz odwiedzić naszą witrynę w przeglądarce Firefox, możesz po prostu wpisać:

firefox $sitea

Terminal pokazujący zmienną jako argument programu.

Znacznie łatwiej – i bardziej czytelnie. Zmienna $siteapozostanie zmapowana do witryny, dopóki ręcznie nie zmienisz jej zawartości lub nie zakończysz sesji Bash. I oczywiście możesz utworzyć więcej zmiennych, takich jak siteb, sitec, i sited.

Konfigurując nowe zmienne, możesz użyć dowolnych nazw i przechowywać w nich dowolne ciągi alfanumeryczne. Pamiętaj jednak, że domyślnie rozróżniana jest wielkość liter. Zatem $siteanie byłoby to samo co $SiteA. Należy również pamiętać, że należy używać cudzysłowów podczas przechowywania ciągów znaków zawierających znaki specjalne (w tym spacje).

Zmienne w skryptach

Zmienne w Bash są bardziej przydatne podczas pisania skryptów, ponieważ umożliwiają napisanie pojedynczego skryptu, który może następnie iterować przez różne ciągi lub działać na niestandardowych fragmentach danych. Załóżmy, że piszesz skrypt, którego każdy mógłby użyć na swoim komputerze, ale za każdym razem wyświetlałby spersonalizowane powitanie. Bez zmiennych musiałbyś napisać inną wersję skryptu dla każdego użytkownika. Dzięki zmiennym zachowujesz ten sam skrypt i zmieniasz tylko nazwę użytkownika.

Taki skrypt wyglądałby mniej więcej tak:

#!/bin/bash

username=Ramces
echo $username

Terminal pokazujący podstawowy skrypt przypisania zmiennych.

Powyższy przykład może wydawać się zbędny; jednak wraz ze wzrostem złożoności kodu zmienne stają się niezbędne. Skrypt może mieć setki lub tysiące linii i zawierać nazwę użytkownika w różnych miejscach. Aby lepiej to zrozumieć, rozważmy następujący nieco inny skrypt:

#!/bin/bash

username=Linus
echo Hello $username. This is a simple script I wrote that will repeat your name - that is, $username - often as an actual example of how to use Bash variables. I hope it will make it easier to understand how to use variables to improve your Bash workflow, $username. In this case, the variable username is mapped to your name. Whenever Bash runs into it, it replaces it with $username.

Terminal przedstawiający podstawowy skrypt z wieloma podstawieniami zmiennych.

Powyższy skrypt użyje nazwy zdefiniowanej jako usernamezmienna do uzupełnienia tekstu. Jeśli używasz rzeczywistej nazwy użytkownika, musisz wpisać ją cztery razy, a następnie zrobić to samo dla następnego użytkownika i kolejne cztery razy dla następnego. Znowu i znowu. Przypisując go do zmiennej wystarczy, że zmienisz go tylko raz dla każdego użytkownika, a każda wzmianka o nazwie użytkownika w tekście zostanie zaktualizowana.

Stałe zmienne Bash i aliasy

Widzieliśmy, jak można tymczasowo ustawić zmienne i jak, aby uzyskać coś bardziej trwałego, można je uwzględnić we własnych skryptach. Możesz także na stałe ustawić zmienne w Bash, edytując plik „~/.bashrc”.

  • Otwórz plik „~/.bashrc” w swoim ulubionym edytorze tekstu.

nano ~/.bashrc

  • Sugerujemy rozpoczęcie od uruchomienia testowego, dodając tylko jedną zmienną, aby wiedzieć, gdzie szukać, jeśli proces się nie powiedzie. Przejdź na koniec pliku i w nowym wierszu dodaj swoją zmienną.

myname="Ramces Red"

Terminal pokazujący nową stałą zmienną w pliku bashrc.
  • Zapisz plik i wyjdź z edytora. Poprawki nie zostaną zastosowane natychmiast. Wprowadź następujące informacje w swoim terminalu, aby odniosły skutek:

source ~/.bashrc

  • Skorzystaj z nowo ustawionej zmiennej w sesji Bash:

echo $myname

Możesz skonfigurować dowolną liczbę zmiennych i znacznie uprościć swoje codzienne przygody w Bash.

Aby dodatkowo zwiększyć produktywność, warto również skonfigurować inny typ zmiennej: aliasy. W przeciwieństwie do typowych zmiennych, które są odwzorowywane na dane, których można używać w poleceniach, zamiast rzeczywistych poleceń używane są aliasy.

Tak jak można używać łatwych do zapamiętania zmiennych do przechowywania długich ciągów tekstu, można używać aliasów jako łatwej alternatywy dla złożonych poleceń.

Wreszcie, nawet jeśli ustawiłeś zmienną na stałe w bashrc, możesz tymczasowo zmienić jej inną wartość, jak widzieliśmy wcześniej. Zmienna będzie prezentować nową treść do momentu zakończenia bieżącej sesji Bash (po wylogowaniu lub ponownym uruchomieniu) lub ponownego źródła. plik bashrc .

Tworzenie tablic

Podczas gdy większość użytkowników Bash myśli o zmiennych jako o prostym połączeniu między fragmentem danych a etykietą, możliwe jest również użycie ich jako znacznika dla tablic. Są to rodzaje struktur danych, które mogą przechowywać wiele wartości w formacie indeksu numerowanego. Aby utworzyć tablicę, wykonaj poniższe czynności:

  • Utwórz pusty skrypt powłoki:

nano array.sh

  • Użyj declarepodkomendy, aby zainicjować tablicę Bash w bieżącym procesie powłoki.

declare -a myarray

Terminal pokazujący krok deklaracji dla tablicy.
  • Wypełnij nową tablicę za pomocą wbudowanego operatora przypisania Bash. Na przykład poniższy wiersz kodu tworzy tablicę zawierającą pięć elementów:

myarray=([0]=hello [1]=maketecheasier [2]=its [3]=an [4]=array)

Terminal przedstawiający podstawową tablicę z 5 elementami.
  • Sprawdź, czy nowa tablica działa, używając echopolecenia pobierania z niej danych:

echo ${myarray[1]}

Terminal pokazujący skrypt tablicowy pobierający pojedynczy element tablicy.

Możesz także przesyłać strumieniowo zawartość tablicy za pomocą operatora „*”:

echo ${myarray[*]}

Terminal pokazujący skrypt tablicy przesyłający strumieniowo całą tablicę.

Wykonywanie zmiennych podpowłoki

Jedną z największych cech Bash jest możliwość tworzenia podpowłok, w których programy mogą działać tak, jakby były podstawowymi funkcjami. Na przykład pisanie ls -aw skrypcie powłoki i uruchamianie go nadal spowoduje wydrukowanie zawartości bieżącego katalogu roboczego.

Terminal pokazujący prostą podpowłokę poleceń.

Chociaż może to wyglądać na ograniczające, Bash rozszerza to, umożliwiając przechowywanie danych wyjściowych tych programów w zmiennych. Dzięki temu możesz używać ich jako danych wejściowych dla innych programów w twoim skrypcie.

  • Aby użyć zmiennych podpowłoki, najpierw utwórz pusty skrypt powłoki:

nano subshell.sh

  • Wpisz następujący kod wzorcowy w swoim nowym skrypcie powłoki:

#!/bin/bash

mysubshell=$(x)echo "The output of the variable is $mysubshell"

  • Zastąp „x” poleceniem, które chcesz uruchomić i zapisz dane wyjściowe. Na przykład poniższy kod pobierze zawartość pliku world.txt i zastąpi słowo „świat” słowem „maketecheasier”.

mysubshell=$(sed s/world/maketecheasier/g world.txt)

Terminal pokazujący proste wykonanie podpowłoki.
  • Przetestuj nową zmienną podpowłoki, uruchamiając nowy skrypt:

chmod u+x. /subshell.sh
bash. /subshell.sh

Terminal pokazujący wyjście skryptu podpowłoki.

Manipulacja podłańcuchem

Oprócz przechowywania i pobierania danych możesz także modyfikować zawartość zmiennych. Bash ma zestaw operatorów, które możesz dołączyć na końcu każdej zmiennej, co pozwoli Ci dopracować skrypty bez wywoływania dodatkowych programów.

  • Utwórz pusty skrypt powłoki:

nano substring.sh

  • W pustym skrypcie wpisz następujący kod wzorcowy:

#!/bin/bash

mysubstring=hello.txt.old
echo "My filename is: ${mysubstring}"

  • Podstawowe operacje na podłańcuchach występują w trzech formach. Najpierw znak „#” akceptuje wzorzec wyrażenia regularnego, który powłoka usunie na początku zmiennej:

#!/bin/bash

mysubstring=hello.txt.old
echo "My filename is: ${mysubstring#*.}"

Terminal pokazujący podstawową manipulację podciągiem prefiksu.
  • Po drugie, znak „%” akceptuje również wzorzec wyrażenia regularnego, który powłoka usunie na końcu zmiennej:

#!/bin/bash

mysubstring=hello.txt.old
echo "My filename is: ${mysubstring%.*}"

Terminal pokazujący podstawową manipulację podłańcuchem przyrostka.
  • Bash zapewnia również sposób selektywnej modyfikacji zawartości zmiennej. Podobnie jak w sedprogramie, możesz użyć znaku „/”, aby znaleźć i zamienić dowolny ciąg wewnątrz zmiennej:

#!/bin/bash

mysubstring=hello.txt
echo "My filename is: ${mysubstring/hello/maketecheasier}"

Terminal pokazujący podstawową funkcję podłańcucha edycji strumienia.

Często Zadawane Pytania

Czy można uruchomić skrypt powłoki wewnątrz zmiennej?

Tak, wpisując pełną ścieżkę skryptu, który chcesz uruchomić. Na przykład uruchomienie $(/home/ramces/.scripts/sample.sh)spowoduje utworzenie podpowłoki Bash i uruchomienie skryptu „sample.sh” z mojego katalogu domowego.

Czy możesz usunąć zmienną podczas działania skryptu?

Tak. Możesz usunąć zmienną z działającego procesu powłoki, wstawiając w unsetskrypcie polecenie podrzędne, po którym następuje nazwa zmiennej. Należy zauważyć, że uruchomienie tego polecenia nie usunie żadnych zmiennych, które działają poza bieżącym procesem powłoki.

Czy możesz użyć stałej zmiennej w zewnętrznym skrypcie powłoki?

Tak. Możliwe jest odwołanie się do wartości zmiennej, która została zadeklarowana poza bieżącym procesem powłoki. Należy jednak zachować ostrożność podczas korzystania ze zmiennych zewnętrznych, ponieważ łatwo je tymczasowo nadpisać.

Źródło obrazu: Unsplash . Wszystkie przeróbki i zrzuty ekranu autorstwa Ramces Red.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *