Witamy w drugiej części przewodnika dla początkujących w serii BASH, która jest wyjątkowa, ponieważ jest to jedyny samouczek BASH napisany przez początkującego dla początkujących.
Czytelnicy tego przewodnika będą budować swoją wiedzę, gdy będę budować swoją wiedzę i miejmy nadzieję, że pod koniec tego wszystkiego będziemy w stanie napisać dość sprytne skrypty.
W ubiegłym tygodniu omówiłem tworzenie pierwszego skryptu, który po prostu wyświetlał słowa "Hello World". Obejmuje on tematy takie jak edytory tekstu, jak otworzyć okno terminala, gdzie umieścić swoje skrypty, jak wyświetlać słowa "Hello World" i kilka lepszych punktów na znakach escape, takich jak cytaty ("").
W tym tygodniu zamierzam omówić parametry wejściowe. Są inni przewodnicy, którzy uczą tego typu rzeczy, ale uważam, że wskakują na dość niski poziom rzeczy i może dostarczają zbyt wiele informacji.
Co to jest parametr?
W skrypcie "Hello World" z ostatniego samouczka wszystko było bardzo statyczne. Scenariusz tak naprawdę nie zrobił wiele.
Jak możemy ulepszyć skrypt "Hello World"?
A co ze scenariuszem, który wita osobę, która je obsługuje? Zamiast mówić "Hello World", powie "Hello Gary", "Hello Tim" lub "Hello Dolly".
Bez możliwości akceptowania parametrów wejściowych musielibyśmy napisać trzy skrypty "hellogary.sh", "hellotim.sh" i "hellodolly.sh".
Pozwalając naszemu skryptowi odczytać parametry wejściowe, możemy użyć jednego skryptu, aby powitać każdego.
W tym celu otwórz okno terminala (CTRL + ALT + T) i przejdź do folderu skryptów, wpisując: (o poleceniu cd)
skrypty cd
Utwórz nowy skrypt o nazwie greetme.sh, wpisując: (o poleceniu dotyku)
dotknij greetme.sh
Otwórz skrypt w ulubionym edytorze, wpisując: (o poleceniu nano)
nano greetme.sh
Wpisz następujący tekst w nano:
#! / bin / bash echo "hello $ @"
Naciśnij CTRL i O, aby zapisać plik, a następnie CTRL i X, aby zamknąć plik.
Aby uruchomić skrypt, wprowadź następujące polecenie w wierszu poleceń, zastępując swoje imię i nazwisko.
sh greetme.sh
Jeśli uruchomię skrypt z moim imieniem, wyświetli się napis "Hello Gary".
Pierwszy wiersz ma linię #! / Bin / bash, która służy do identyfikacji pliku jako skryptu bash.
Druga linia używa instrukcji echo, aby uzyskać echo słowa hello, a następnie jest dziwna notacja $ @. (o poleceniu echo)
$ @ Rozwija się, aby wyświetlić każdy parametr wprowadzony wraz z nazwą skryptu. Więc jeśli wpisałeś "sh greetme.sh tim" wyświetliłyby się słowa "hello tim". Jeśli wpisałeś "greetme.sh tim smith", wyświetliłyby się słowa "hello tim smith".
Byłoby miło, gdyby skrypt greetme.sh powiedział "cześć", używając tylko imienia. Nikt nie mówi "cześć Gary Newell", gdy się ze mną spotkać, ale mogą powiedzieć "cześć gary".
Zmieńmy skrypt tak, aby używał pierwszego parametru. Otwórz skrypt greetme.sh w nano, wpisując:
nano greetme.sh
Zmień skrypt tak, aby brzmiał następująco:
#! / bin / bash echo "cześć 1 $"
Zapisz skrypt, naciskając CTRL i O, a następnie wyjdź, naciskając klawisze CTRL i X.
Uruchom skrypt, jak pokazano poniżej (zamień moje imię na twoje):
sh greetme.sh gary newell
Po uruchomieniu skryptu po prostu powie "cześć gary" (lub mam nadzieję "cześć" i jakkolwiek się nazywasz.
Wartość 1 po symbolu $ w zasadzie mówi do polecenia echo, użyj pierwszego parametru. Jeśli zastąpisz 1 $ wartością 2 USD, wyświetli się komunikat "witaj Newell" (lub cokolwiek innego twoje nazwisko).
Nawiasem mówiąc, jeśli zamienisz 2 dolary na 3 dolary i uruchomisz skrypt za pomocą tylko 2 parametrów, wyjście będzie po prostu "Cześć".
Możliwe jest wyświetlenie i obsłużenie liczby wprowadzonych parametrów, aw późniejszych samouczkach pokażę, jak używać liczby parametrów do celów sprawdzania poprawności.
Aby wyświetlić liczbę wprowadzonych parametrów, otwórz skrypt greetme.sh (nano greetme.sh) i zmień tekst w następujący sposób:
#! / bin / bash echo "Podałeś $ # names" echo "hello $ @"
Naciśnij CTRL i O, aby zapisać skrypt i CTRL i X, aby opuścić nano.
$ # W drugim wierszu wyświetla liczbę wprowadzonych parametrów.
Dotychczas wszystko to było nowe, ale niezbyt użyteczne. Kto potrzebuje skryptu, który wyświetla po prostu "cześć"?
Rzeczywistym zastosowaniem instrukcji echo jest dostarczenie użytkownikom wyczerpującego i znaczącego wyniku. Jeśli możesz sobie wyobrazić, że chcesz zrobić coś skomplikowanego, co wiąże się z poważnym zgnieceniem numeru i manipulacją plikami / folderami, dobrze byłoby wyświetlić użytkownikowi, co dzieje się na każdym kroku.
Natomiast parametry wejściowe sprawiają, że twój skrypt jest interaktywny. Bez parametrów wejściowych potrzebne są dziesiątki skryptów wykonujących bardzo podobne czynności, ale z nieco innymi nazwami.
Mając to wszystko na uwadze, istnieje kilka innych przydatnych parametrów wejściowych, które warto znać, a wszystkie uwzględnię w jednym fragmencie kodu.
Otwórz skrypt greetme.sh i zmień go w następujący sposób:
#! / bin / bash echo "Filename: $ 0" echo "Process ID: $$" echo "---------------------------- --- "echo" wpisałeś $ # nazwy "echo" cześć $ @ "
Naciśnij CTRL i O, aby zapisać plik, a CTRL i X, aby wyjść.
Teraz uruchom skrypt (zamień swoje imię i nazwisko).
sh greetme.sh
Tym razem skrypt wyświetla następujące informacje:
Nazwa pliku: greetme.sh ID procesu: 18595 ------------------------------ Wprowadziłeś 2 nazwiska hello gary newell
$ 0 w pierwszym wierszu skryptu wyświetla nazwę skryptu, który uruchamiasz.Zauważ, że jest to dolar zero, a nie dolar o.
$$ w drugim wierszu wyświetla identyfikator procesu skryptu, który uruchamiasz. Dlaczego jest to przydatne? Jeśli uruchamiasz skrypt na pierwszym planie, możesz go anulować, naciskając klawisze CTRL i C. Jeśli uruchomiłeś skrypt w tle, a on zaczął się zapętlać i robił to samo w kółko lub zaczął wywoływać uszkodzenia w twoim systemie, potrzebujesz zabić go.
Aby zabić skrypt działający w tle, potrzebujesz identyfikatora procesu skryptu. Czy nie byłoby dobrze, gdyby skrypt nadał identyfikator procesu jako część jego danych wyjściowych. (o poleceniach ps i kill)
Na koniec, zanim skończę z tym tematem, chciałem omówić, gdzie idzie produkcja. Za każdym razem, gdy skrypt działał do tej pory, dane wyjściowe były wyświetlane na ekranie.
Często zdarza się, że dane wyjściowe skryptu są zapisywane w pliku wyjściowym. Aby to zrobić, uruchom skrypt w następujący sposób:
sh greetme.sh gary> greetme.log
Symbol> w powyższym poleceniu wypisuje tekst "hello gary" do pliku o nazwie greetme.log.
Za każdym razem, gdy uruchamiasz skrypt z symbolem>, on zastępuje zawartość pliku wyjściowego. Jeśli wolisz dołączyć do pliku, zastąp> z >>.
streszczenie
Powinieneś teraz móc pisać tekst na ekranie i akceptować parametry wejściowe.