Różne typy poleceń bash muszą być uruchamiane z terminala w zależności od wymagań użytkownika. Gdy użytkownik uruchamia dowolne polecenie z terminala, wyświetla dane wyjściowe, jeśli nie ma błędu, w przeciwnym razie wyświetla komunikat o błędzie. Czasami dane wyjściowe polecenia muszą być przechowywane w zmiennej do wykorzystania w przyszłości. W tym celu można wykorzystać funkcję podstawiania poleceń powłoki w bash. W tym samouczku pokazano, w jaki sposób można przechowywać różne typy poleceń powłoki w zmiennej za pomocą tej funkcji.
zmienny= $(Komenda)zmienny= $(Komenda [opcja…]argument1 argumenty2 ...)
zmienny= $(/ścieżka/do/Komenda)
LUB
zmienny=``Komenda``
zmienny=``Komenda [opcja…]argument1 argumenty2 ...``
zmienny=`/ścieżka/do/Komenda``
***Uwaga: nie używaj spacji przed i po znaku równości podczas korzystania z powyższych poleceń.
Wyjście pojedynczego polecenia do zmiennej
Polecenia Bash mogą być używane bez żadnych opcji i argumentów dla tych poleceń, w których te części są opcjonalne. Poniższe dwa przykłady pokazują zastosowania prostego podstawiania poleceń.
Przykład 1:
walić ` data` Polecenie służy do pokazywania aktualnej daty i czasu. Poniższy skrypt przechowuje dane wyjściowe ` data` polecenie w $ bieżąca data zmienna za pomocą podstawiania poleceń.
$bieżąca data= $(Data)
$wyrzucił 'Dziś jest$bieżąca_data'
Wyjście:
Przykład #2:
`pwd` polecenie pokazuje ścieżkę bieżącego katalogu roboczego. Poniższy skrypt przechowuje dane wyjściowe `pwd` polecenie do zmiennej, $ aktualny_katalog a wartość tej zmiennej jest wypisywana za pomocą „echo” Komenda.
$obecny_katalog=``pwd``$wyrzucił 'Aktualny katalog to:$ aktualny_katalog'
Wyjście:
Polecenie z opcją i argumentem
Opcja i argument są obowiązkowe dla niektórych poleceń basha. Poniższe przykłady pokazują, jak można przechowywać dane wyjściowe polecenia z opcją i argumentem w zmiennej.
Przykład #3:
Bash ` toaleta Polecenie służy do zliczania całkowitej liczby linii, słów i znaków dowolnego pliku. To polecenie używa -c, -w i -l jako opcji i nazwy pliku jako argumentu do wygenerowania danych wyjściowych. Utwórz plik tekstowy o nazwie owoce.txt z następującymi danymi, aby przetestować następny skrypt.
owoce.txt
Mango
Pomarańczowy
Banan
Winogrono
Guawa
jabłko
Uruchom następujące polecenia, aby policzyć i zapisać całkowitą liczbę słów w owoce.txt plik do zmiennej, $count_words i wypisz wartość za pomocą ` echo` Komenda.
$count_words=``toaleta -wowoce.txt``$wyrzucił 'Całkowita liczba słów w pliku fruits.txt to$count_words'
Wyjście:
Przykład nr 4:
`cięcie` to kolejne polecenie bash, które używa opcji i argumentu do generowania danych wyjściowych. Utwórz plik tekstowy o nazwie dzień tygodnia.txt z nazwami siedmiu dni tygodnia, aby uruchomić następny skrypt.
dzień tygodnia.txt
poniedziałekWtorek
Środa
czwartek
piątek
sobota
niedziela
Utwórz plik bash o nazwie cmdsub1.sh z następującym skryptem. W tym skrypcie podczas pętla służy do odczytywania zawartości dzień tygodnia.txt plik wiersz po wierszu i odczytaj pierwsze trzy znaki każdego wiersza za pomocą ` cięcie` Komenda. Po wycięciu wartość ciągu jest przechowywana w zmiennej $dzień . Następnie, jeśli instrukcja służy do sprawdzania wartości $dzień jest ' Słońce' albo nie. Wynik wydrukuje ‘ Niedziela to święto ‘ kiedy jeśli warunek jest spełniony, w przeciwnym razie wypisze wartość $dzień .
cmdsub1.sh
#!/kosz/bashNazwa pliku='dzień tygodnia.txt'
podczas czytaćlinia;robić
dzień=``wyrzucił $linia | skaleczenie -C 1-3``
Jeśli [ $dzień=='Słońce' ]
następnie
wyrzucił „Niedziela to święto”
w przeciwnym razie
wyrzucił $dzień
być
Gotowe<$nazwa pliku
Uruchom skrypt.
$Kotdzień tygodnia.txt$grzmotnąćcmdsub1.sh
Wyjście:
Korzystanie z podmiany poleceń w pętli
Możesz przechowywać dane wyjściowe podstawiania poleceń w dowolnej zmiennej pętli, która jest pokazana w następnym przykładzie.
Przykład nr 5:
Utwórz plik o nazwie cmdsub2.sh z następującym kodem. Tutaj ` ls -d * / Polecenie ` służy do pobrania całej listy katalogów z bieżącego katalogu. Pętla For służy tutaj do odczytywania każdego katalogu z wyjścia i przechowywania go w zmiennej $dirname który zostanie wydrukowany później.
cmdsub2.sh
#!/kosz/bashdla dirname w$(ls -D * /)
robić
wyrzucił '$dirname'
Gotowe
Uruchom skrypt.
$grzmotnąćcmdsub2.shWyjście:
Używanie zagnieżdżonych poleceń
W poprzednim przykładzie pokazano, jak używać wielu poleceń za pomocą pipe(|). Ale możesz użyć zagnieżdżonych poleceń w zastępowaniu poleceń, gdzie wynik pierwszego polecenia zależy od wyniku drugiego polecenia i działa odwrotnie do polecenia potoku(|).
Składnia polecenia zagnieżdżonego:
gdzie=``polecenie1 ``Komenda``Przykład nr 6:
Dwa polecenia, ` wyrzucił ` i ` który ` są używane w tym przykładzie jako polecenie zagnieżdżone. Tutaj ` który Jako pierwsze zostanie wykonane polecenie `, które drukuje informacje o aktualnie zalogowanym użytkowniku. Wyjście ` który polecenie ` zostanie wykonane przez ` wyrzucił polecenie ` i wyjście ` wyrzucił ` zapisze w zmiennej $ var . Tutaj wyjście ` wyrzucił Polecenie ` zależy od wyniku ` który polecenie `.
$gdzie=``wyrzucił``który``$wyrzucił $ var
Wyjście:
Korzystanie ze ścieżki poleceń
Jeśli znasz ścieżkę polecenia, możesz uruchomić polecenie, określając ścieżkę polecenia podczas korzystania z podstawiania poleceń. Poniższy przykład pokazuje użycie ścieżki poleceń.
Przykład nr 7:
„Whoami” komenda pokazuje nazwę aktualnie zalogowanego użytkownika. Domyślnie to polecenie jest przechowywane w / usr/ jestem/ teczka. Uruchom następujący skrypt, aby uruchomić ` Whoami polecenie używając ścieżki i zapisz w zmiennej, $wyjście, i wypisz wartość $wyjście .
$wyjście= $(/usr/jestem/kim jestem)$wyrzucił $wyjście
Wyjście:
Korzystanie z argumentu wiersza poleceń
Możesz użyć argumentu wiersza poleceń z poleceniem jako argumentu w podstawieniu polecenia.
Przykład nr 8:
Utwórz plik bash o nazwie cmdsub3.sh z następującym skryptem. ` nazwa podstawowa Komenda ` służy tutaj do pobrania nazwy pliku z 2NSargument wiersza poleceń i przechowywany w zmiennej, $nazwa pliku . Znamy 1NSargument wiersza poleceń to nazwa wykonywanego skryptu, który jest oznaczony przez $0.
#!/kosz/bashNazwa pliku=``nazwa podstawowa 1 zł``
wyrzucił 'Nazwa pliku to$nazwa pliku'
Uruchom skrypt z następującą wartością argumentu.
$grzmotnąćcmdsub3.sh Pulpit/temp/cześć.txtTutaj, nazwa podstawowa ścieżki, Pulpit/temp/hello.txt jest ' cześć.txt ”. Tak więc wartość $nazwa pliku będzie cześć.txt .
Wyjście:
Wniosek:
W tym samouczku pokazano różne zastosowania podstawienia poleceń. Jeśli musisz pracować z wieloma poleceniami lub poleceniami zależnymi i tymczasowo przechowywać wynik, aby później wykonać inne zadania, możesz użyć tej funkcji w skrypcie, aby uzyskać dane wyjściowe.
Więcej informacji w filmie: