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
Następnie, jeśli chcesz odwiedzić naszą witrynę w przeglądarce Firefox, możesz po prostu wpisać:
firefox $sitea
Znacznie łatwiej – i bardziej czytelnie. Zmienna $sitea
pozostanie 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 $sitea
nie 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
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.
Powyższy skrypt użyje nazwy zdefiniowanej jako username
zmienna 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"
- 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
declare
podkomendy, aby zainicjować tablicę Bash w bieżącym procesie powłoki.
declare -a myarray
- 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)
- Sprawdź, czy nowa tablica działa, używając
echo
polecenia pobierania z niej danych:
echo ${myarray[1]}
Możesz także przesyłać strumieniowo zawartość tablicy za pomocą operatora „*”:
echo ${myarray[*]}
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 -a
w skrypcie powłoki i uruchamianie go nadal spowoduje wydrukowanie zawartości bieżącego katalogu roboczego.
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)
- Przetestuj nową zmienną podpowłoki, uruchamiając nowy skrypt:
chmod u+x. /subshell.sh
bash. /subshell.sh
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#*.}"
- 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%.*}"
- Bash zapewnia również sposób selektywnej modyfikacji zawartości zmiennej. Podobnie jak w
sed
programie, 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}"
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 unset
skrypcie 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