[ Pobierz całość w formacie PDF ]
I odwrotnie, zaczynając naukę programowania od skryptów i przechodząc do innych
języków programowania, Czytelnik będzie musiał nauczyć się identyfikować zmienne
jako liczby, łańcuchy i inne typy danych istniejące w danym języku.
Przypisywanie wartości do zmiennych
Deklarowanie i inicjalizowanie zmiennych w powłoce bash jest proste. Aby użyć np.
zmiennej o nazwie lcount do zliczania iteracji pętli, należy wpisać lcount=0.
Aby zapisać łańcuch w zmiennej, wystarczy jednocześnie ją zadeklarować i zidentyfikować:
myname=mikemc
Jeśli łańcuch zawiera spacje, należy użyć cudzysłowów:
myname="Michael McCallister"
Dostęp do wartości zmiennych
Dostęp do wartości zmiennej wymaga poprzedzenia jej nazwy znakiem dolara ($).
Na przykład, aby wyświetlić ścieżkę dostępu, należy wpisać $PATH. Jeśli zmienna ma
nazwę var, użyjemy zapisu $var.
Aby przypisać wartość zmiennej var do zmiennej lcount, należy wpisać:
lcount=$var
164 Część II Praca z systemem SUSE Linux
Parametry pozycyjne
Do skryptu powłoki można przekazać opcje z wiersza poleceń lub innego skryptu. Opcje
te noszą nazwę parametrów pozycyjnych i mają specjalne nazwy, zdefiniowane przez
system. Pisanie zaawansowanych skryptów powłoki wymaga umiejętności korzystania
z parametrów pozycyjnych i pobierania wartości z wiersza polecenia.
Nazwami parametrów pozycyjnych są w istocie liczby; pierwszy parametr ma nazwę 1,
następny 2, trzeci 3 i tak dalej. Dostęp do nich odbywa się przez $1, $2 itd. Nie można
wywołać 2 przed 1, lecz można pominąć 3, aby uzyskać wynik, jeśli 1 i 2 są obecne.
Załóżmy, że mamy skrypt powłoki wymagający dwóch parametrów: imienia i nazwiska.
Jeśli podamy tylko imię (1), to w porządku. Jeśli tylko nazwisko (2), otrzymamy błąd.
Poniższy skrypt o nazwie myname1 pobiera jeden parametr (imię) i wyświetla na ekranie:
#!/bin/sh
# skrypt wyświetlający imię
if [ $# -eq 0 ]
then
echo "Imię nie zostało podane"
else
echo "Podane imiÄ™ to "$1
fi
W skryptach powłoki każda instrukcja if musi być zakończona instrukcją fi.
Uruchomienie myname1 następująco:
bash myname1
zwróci wynik:
Imię nie zostało podane
Poniższe polecenie:
bash myname1 Mike
zwróci taki wynik:
Podane imiÄ™ to Mike
Czytelnik może zastanawiać się, co w tym skrypcie oznacza kod $#. Jest to zmienna
wbudowana, udostępniana przez jądro dla powłoki i zwracająca liczbę parametrów po-
zycyjnych, przekazanych do programu powłoki. Więcej o tych wbudowanych zmiennych
powiemy poniżej.
Rozdział 8. Praca z powłoką 165
Pozyskiwanie zmiennych wiersza polecenia
za pomocą parametrów pozycyjnych
Parametry pozycyjne mogą być bardzo przydatne przy łączeniu potokowym poleceń
z użyciem złożonych argumentów, zwłaszcza jeśli polecenia nie są często używane. Na
przykład, system z modemem głosowym może służyć jako automatyczna sekretarka.
W takim komputerze możemy napisać skrypt, który pobiera i odtwarza wiadomości.
Skrypt ten, o nazwie pvm, konwertuje zapisany plik dzwiękowy (w formacie telefonu
głosowego .rmd) i kieruje dzwięk do urządzenia audio:
#!/bin/sh
# odtwarzanie wiadomości głosowych z /var/spool/voice/incoming
rmdtopvf /var/spool/voice/incoming/$1 | pvfspeed -$ 0000; \
pvftobasic > /dev/audio
Aby odtworzyć wiadomość, należy wpisać w wierszu zachęty powłoki:
pvm
Automatyzacja zadań za pomocą skryptów
Skrypty powłoki z parametrami pozycyjnymi używane są często do automatyzacji ruty-
nowych i zwykłych zadań, na przykład generowania raportów z dzienników zdarzeń,
sprawdzania systemów plików, rozliczania wykorzystania zasobów przez użytkowników
i innych zadań związanych z systemem, siecią lub bezpieczeństwem.
Poniższy skrypt po dodaniu do tablicy harmonogramu /etc/crontab może pomóc w moni-
torowaniu systemu, szukając w plikach dziennika słów kluczowych wskazujących ważne
informacje.
#!/bin/sh
# nazwa: greplog
# zastosowanie: wysyła pocztą wyniki szukania słowa kluczowego
# w dzienniku zdarzeń
#
# autor: bb
# sposób użycia: greplog {słowo_kluczowe} {nazwa_dziennika}
#
[ Pobierz całość w formacie PDF ]