Podpowłoki Bash

Podpowloki Bash



Czasami wymaga to uruchomienia jednego lub więcej poleceń lub skryptów w tle. To zadanie można wykonać, zapisując wszystkie polecenia lub skrypty w pliku skryptu i uruchamiając plik za pomocą ampersand (&) lub wykonując polecenia lub skrypty w podpowłoce z bieżącej powłoki. Podpowłoki można używać do wykonywania wielu poleceń lub skryptów, umieszczając ją za pomocą $() lub backticks (`). Metody korzystania z podpowłoki Bash są pokazane w tym samouczku.

Różne przykłady podpowłoki

W tej części samouczka pokazano różne sposoby wykonywania skryptu w podpowłoce.

Przykład 1: Wykonaj podpowłokę przy użyciu pojedynczego i podwójnego cudzysłowu

Utwórz plik Bash za pomocą następującego skryptu, który drukuje bieżącą datę i godzinę. Następnie zmienna $strVal jest drukowana poprzez ujęcie skryptu podpowłoki w pojedyncze i podwójne cudzysłowy.







#!/bin/bash

# Wydrukuj polecenie `date` w podpowłoce

Echo 'Dziś jest `data` '

# Zdefiniuj zmienną łańcuchową

strVal = „Podpowłoka Bash”

# Wydrukuj zmienną w podpowłoce, używając pojedynczych cudzysłowów

Echo „Wyjście pojedynczych cudzysłowów:” '$(echo $strVal)'

# Wydrukuj zmienną w podpowłoce, używając podwójnych cudzysłowów

Echo „Wynik podwójnych cudzysłowów:” ' $(echo $strVal) '

Po wykonaniu skryptu pojawia się następujący wynik. Skrypt podpowłoki jest drukowany jako łańcuch, jeśli jest ujęty w pojedyncze cudzysłowy. Skrypt podpowłoki jest wykonywany, gdy jest ujęty w podwójne cudzysłowy:





Przykład 2: Przeszukaj wszystkie pliki określonego rozszerzenia za pomocą podpowłoki

Utwórz plik Bash za pomocą następującego skryptu, który pobiera rozszerzenie pliku jako dane wejściowe od użytkownika. Następnie polecenie „ls” jest wykonywane w podpowłoce w celu przeszukania wszystkich plików tego konkretnego rozszerzenia.





#!/bin/bash

Echo -N „Wprowadź nazwę rozszerzenia pliku:”

#Weź nazwę rozszerzenia pliku, które będzie wyszukiwane

Czytać wew

#Sprawdź wprowadzoną wartość

Jeśli [ [ $wewn == '' ] ] ; Następnie

#Drukuj komunikat o błędzie

Echo „Nie podano przedłużenia”.

w przeciwnym razie

Echo „Nazwy plików z $wewn rozszerzenie:'

#Wydrukuj wszystkie nazwy plików z podanym rozszerzeniem

Echo ' $( echo `ls *.$ext` ) '

Być

Poniższe wyjście pojawia się po wykonaniu skryptu z wejściem „txt”. Zgodnie z wynikami w bieżącej lokalizacji istnieją trzy pliki tekstowe:



Po wykonaniu skryptu z pustą wartością pojawia się następujący wynik:

Przykład 3: Wykonaj wyrażenie arytmetyczne w podpowłoce

Utwórz plik Bash za pomocą następującego skryptu, w którym zmienna o tej samej nazwie jest używana w powłoce głównej i powłoce podrzędnej. Operacja arytmetyczna jest zdefiniowana w powłoce głównej i podpowłoce.

#!/bin/bash

# Zdefiniuj nadrzędną zmienną powłoki

numer = 10

#Wydrukuj wynik na podstawie zmiennej powłoki nadrzędnej

( ( wynik = $liczba + 5 ) )

Echo 'Suma $liczba +5= $wynik '

# Utwórz zmienną podpowłoki o tej samej nazwie, co powłoka nadrzędna

( numer = 20 ; ( ( wynik = $liczba + 10 ) ) ; Echo 'Suma $liczba +5= $wynik ' )

#Wydrukuj ponownie wynik na podstawie zmiennej powłoki nadrzędnej

Echo 'Suma $liczba +5= $wynik '

Po wykonaniu skryptu pojawia się następujący wynik. Pierwsze i ostatnie wyjścia pokazują wynik powłoki głównej. Drugie wyjście pokazuje wynik podpowłoki. Zmienna powłoki głównej nie jest modyfikowana przez zmienną powłoki podrzędnej:

Przykład 4: Wykonaj wiele poleceń w podpowłoce

Utwórz plik Bash za pomocą następującego skryptu, który wysyła dane wyjściowe polecenia „echo” do polecenia „sed”, które zastępuje pasującą wartość ciągu innym ciągiem. Dane wyjściowe polecenia „echo” to „JavaScript”. Tak więc ta wartość jest porównywana z „Java” i „JavaScript”. Jeśli zostanie znalezione dopasowanie, pasujące ciągi zostaną zastąpione ciągiem „Typ”.

#!/bin/bash

# Zdefiniuj wartość ciągu

strVal = „JavaScript”

#Wydrukuj oryginalną wartość ciągu

Echo „Wartość ciągu: $strVal '

#Wydrukuj wartość podpowłoki

Echo -N 'Wartość podpowłoki: '

Echo ' $(echo $strVal | sed 's|Java|Typ JavaScript|') '

Po wykonaniu skryptu pojawia się następujący wynik. Zgodnie z danymi wyjściowymi ciąg „Java” jest zastępowany ciągiem „Typ”. Dane wyjściowe podpowłoki to „JavaScript TypeScript”:


Wniosek

Jedno lub więcej poleceń lub skryptów można wykonać przy użyciu podpowłoki bez wpływu na główną powłokę. Cele używania podpowłoki są wyjaśnione w tym samouczku przy użyciu wielu przykładów. W podanych przykładach podpowłoka wykonuje różne zadania, takie jak przeszukiwanie plików, obliczanie sumy liczb, zastępowanie ciągów znaków itp. Koncepcja użycia podpowłoki została właściwie zademonstrowana, a nowi użytkownicy Bash będą teraz mogli używać podpowłoki po przeczytaniu tego samouczka.