Wprowadzenie
W skryptach bash przypisywanie danych wyjściowych polecenia do zmiennych może być wygodne dzięki przechowywaniu danych wyjściowych poleceń i używaniu ich później.
W tym krótkim przewodniku przyjrzymy się, w jaki sposób można przechowywać dane wyjściowe polecenia jako zmienną w Bash.
Podstawy konfigurowania zmiennych
Zapisywanie danych wyjściowych polecenia jako zmiennej odbywa się poprzez zastępowanie poleceń. Podstawianie poleceń to opakowanie, które wykonuje polecenie w a środowisko podpowłokii zastępuje opakowane polecenie standardowym wyjściem środowiska, w którym polecenie zostało uruchomione. To wyjście może być następnie odwoływane później, jeśli jest podłączone do zmiennej odniesienia!
Zastępowanie poleceń można osiągnąć za pomocą kresek wstecznych lub znaku dolara z nawiasami:
`command`
$(command)
Trwa debata, czy `polecenie` (odwrotne zaznaczenie) lub $(polecenie) (znak dolara i nawiasy) powinny być stosowane jako „najlepsze praktyki”. $(command)
działa dobrze w zagnieżdżaniu i poprawia czytelność w niektórych przypadkach, ale w poniższych przykładach można zastosować dowolną składnię.
To powiedziawszy – przypisanie wyjścia polecenia do zmiennej w Bash jest tak proste, jak:
VARIABLE=$(command)
echo "${VARIABLE}"
Bieganie ${variable}
jest znany jako rozszerzenie parametrówi służy do oceny i pobrania wartości powiązanej ze zmienną odniesienia.
Przyjrzyjmy się teraz prostemu przykładowi ustawienia zmiennej dla polecenia zmiany koloru wyjściowego:
#!/bin/bash
GREEN=$(tput setaf 2)
echo "${GREEN}Please"
ORANGE=$(tput setaf 9)
echo "${ORANGE}Visit"
echo "${GREEN}Paris"
We fragmencie użyliśmy metody tput
polecenie i przypisał zwróconą wartość tych poleceń, aby wydrukować kolorowy tekst. The setaf
zmienia kolor pierwszego planu, a 3 (zielony) i 9 (pomarańczowy) to kody kolorów.
Teraz przejdziemy do innego przykładu, który zawiera wiele warunków do ustawiania zmiennych dla różnych poleceń:
#!/bin/bash
PERSON=$(whoami)
echo -e "Hey ${PERSON}! I am Charlien"
DETAILS=$(uname -a)
echo -e "You're running this script on:n${DETAILS}n"
DATES=$(date)
echo -e "The script is being run on:n${DATES}n"
CREATE=$(touch $(date +"%d%m%Y").txt)
echo -e "A text file logging this run is created.${CREATE}n"
LOCATION=$(ls
-l *txt)
echo -e "Saved text file at: ${LOCATION}"
W powyższym skrypcie plik whoami
polecenie zwraca nazwę użytkownika bieżącego użytkownika. The uname -a
zwraca informacje o systemie i date
zwraca aktualną godzinę i datę.
Uwaga: Możemy łańcuchować przypisywanie zmiennych, dodając wiele poleceń w jednym zagnieżdżonym wywołaniu. The CREATE
zmienna zawiera dane wyjściowe touch
polecenie, które z kolei tworzy plik i ustawia nazwę pliku na dane wyjściowe programu date +"%d%m%Y
dowództwo.
Zapoznaj się z naszym praktycznym, praktycznym przewodnikiem dotyczącym nauki Git, zawierającym najlepsze praktyki, standardy przyjęte w branży i dołączoną ściągawkę. Zatrzymaj polecenia Google Git, a właściwie uczyć się to!
Na koniec dodajemy A multiline
koncepcję przypisania zmiennej polecenia przez dodanie ukośnika odwrotnego ()
między ls
komenda -l
flaga, aby wyświetlać tylko pliki tekstowe przy użyciu *.txt
. Ukośnik odwrotny to znak ucieczki, który informuje powłokę, aby nie interpretowała następnego znaku.
W echo
polecenie, dodaliśmy -e
flaga, aby użyć znaku specjalnego, tj. n
(nowy wiersz), aby wydrukować dane wyjściowe w nowym wierszu.
Po wykonaniu skryptu otrzymujemy następujący wynik:
$ ./variable.sh
Wnioski
W tym krótkim przewodniku przyjrzeliśmy się, jak ustawić wyjście polecenia na zmienną w Bash. Przyjrzeliśmy się różnicy między składniami for zastępowanie poleceń, zwracając uwagę na poprawę czytelności $(command)
nad podstawieniem opartym na backtick. Następnie przyjrzeliśmy się kilku przykładom zarówno prostego przypisania, jak i łańcuchowego/zagnieżdżonego przypisania danych wyjściowych.