Podstawy programowania w shellu 349
Przykładowy program
Tym razem podarujemy sobie kolejny program w stylu „Cześć, jak się masz?”. Zamiast niego chciałbym zademonstrować coś co może się rzeczywiście przydać. Załóżmy, że interesuje nas uzyskanie efektownie sformatowanego wydruku zawartości bieżącego katalogu. Listing 22.1 stanowi przykładowe podejście do problemu (liczby stojące przed poszczególnymi linijkami nie pojawiają się w rzeczywistym kodzie).
Listing 22.1. Skrypt druku j kat przesyła podzieloną na strony listę plików i katalogów do drukarki
1. #!/bin/bash
3. ttJan Walter jwalter@rogers .wave .ca
4. #Rozdział 2?
5. łCopyright 1998 Macmillan Computer Publishing oraz Jan Walter
6. łWszystkie prawa zastrzeżone
7. łkiniejszy kod nie jest objęty żadna gwarancja.
9. pr /tmp/lsteir.p I lpr
10. rm /tnp/lstemp
11. łkonieo skryptu
Do uruchomienia powyższego skryptu zaleca się otwarcie sesji na koncie zwykłego użytkownika (nie administratora). Konieczne jest posiadanie zainstalowanej i odpowiednio skonfigurowanej drukarki. Wykonanie skryptu polega na kolejnym wykonaniu wszystkich zawartych w nim poleceń. Oto opis ważniejszych operacji:
■ Linijka 1 mówi systemowi, który shell należy uruchomić w celu wykonania skryptu. Jest to ważne, ponieważ różne shcllc udostępniają różne polecenia.
■ Linijka 8 uruchamia polecenie ls -1 i zapisuje wyniki w tymczasowym katalogu sys temowym.
■ Linijka 9 przesyła zawartość pliku lstemp do polecenia pr (dzielącego tekst na strony, numerującego je, dopisującego nagłówek itp. w zależności od podanych parametrów). Wynik zostaje następnie przekazany do programu lpr, zajmującego się wydrukiem. Istotny jest tu sposób połączenia poleceń w potok i przekierowania strumieni, a nie same polecenia.
* Linijka 10 usuwa tymczasowy plik utworzony w linijce 8 (pamiętajmy: dobrze napisany program powinien posprzątać po sobie).
Uruchamianie skryptu
I. Otwórz edytor tekstu, na przykład joc, wpisując:
joe drukujkat