Skrypt rozwiazujacy ponizsze zadanie. -------------------------------------------------------------------------- Korzystajac z polecen grep i find napisz skrypt grepf [...] [<--> [...]] wywolujacy program 'grep' dla wszystkich plikow i podkatalogow z katalogow dir1 i ewentualnie innych zadanych. 'grep' ma byc wywolywany z opcjami zadanymi po parametrze '--'. Przyklad poprawnego wywolania: ./grepf getpid /usr/include ./grepf getpid /usr/include ./lab3 -- -i -------------------------------------------------------------------------- Skrypt jest dostepny w trzech wersjach: 1. wersja uproszczona, bez rozpatrywania bialych znakow w nazwach plikow/katalogow oraz we wzorcu (wystarczajaca na kolokwium). 2. wersja zaawansowana, prawidlowo obslugujaca rowniez biale znaki. 3. wersja z uproszczona skladnia, korzystajaca z rozszerzen dostepnych w interpreterze bash. Uwaga, na kolokwium i egzaminie rozszerzenia bash _nie_ _sa_ _dopuszczalne_, mozna korzystac tylko ze skladni dostepnej w standardowym sh. Prosze zwrocic uwage na nastepujace aspekty wersji zaawansowanej: - chocby najprostsze sprawdzanie skladni wywolania, - sposob rozdzielania dlugich lancuchow dla echo, - sposob wypisywania informacji o bledach, - wykorzystanie basename, - obsluga opcji wywolania wraz z poleceniem shift, - powod poprzedzania przez 'x' argumentow polecenia test, - przeznaczenie i sposob wykorzystania polecenia eval, zmienne dynamiczne i pseudo-tablice, sposob korzystania ze zmiennych o ustalanych dynamicznie nazwach, - specjalna interpretacja argumentu '--' dla grep, - poniewaz find nie przyjmuje '--', zatem jaki jest cel poprzedzajacego 'case', - wykorzystanie xargs, - wykorzystanie expr, - zastosowanie "$@", - cytowania "" przy zadawaniu wartosci zmiennym. Uwaga, w kodzie wykorzystano tandem opcji-rozszerzen wersji GNU narzedzi find i xargs: 1. find ... -print0 2. xargs -0 Klasyczne pierwotne implementacje uniksowe powyzszych polecen nie daja mozliwosci obslugi nazw plikow ze znakami specjalnymi.