Bash skrypty
14 July 2008
Comments
Polecenia BASHA można łączyć ze sobą tworząc skrypty, które dodatkowo mogą zawierać np. wyrażenia logiczne oraz odwoływać się do innych aplikacji.Jako zwykły użytkownik wykonaj w konsoli:
touch skrypt chmod 755 skrypt
echo 'To jest tekst' echo "A to drugi" zmienna="cześć" echo "Wartość zmiennej to: $zmienna" echo 'Pojedynczy cudzysłów i $zmienna'
To jest tekst A to drugi Wartość zmiennej to: cześć Pojedynczy cudzysłów i $zmienna
Pobieranie danych od użytkownika
Chcemy skrypt, który poprosi użytkownika o dane, np:echo 'Jak masz na imię?' read zmienna echo "Twoje imie to: $zmienna"
Skrypt przykładowy 1 - Generator wizytówki - coś ala BASHowa księga gości
Chcemy prosty skrypt BASHA, który pobierze dane takie jak Imię i Nazwisko, adres Email i numer GG i zapisze do pliku. Oto kod#!/bin/bash echo 'Witaj w generatorze wizytówek v. 13.666' echo '#####################################' echo 'Program poprosi cię o wpisanie różnych danych.' echo 'Po wpisaniu wciśnij Enter by przejść dalej.' echo '#####################################' echo 'Podaj swoje Imię i Nazwisko:' read name echo 'Podaj swój adres E-Mail:' read mail echo 'Podaj numer Gadu-Gadu:' read gg echo '#####################################' echo 'Pobieranie danych zakończone' touch wizytowka.txt echo "$name" >> wizytowka.txt echo "Email: $mail" >> wizytowka.txt echo "Gadu-Gadu $gg" >> wizytowka.txt echo 'Generowanie wizytówki zakończone' echo 'Plik wizytowka.txt gotowy!' echo '#####################################'
Witaj w generatorze wizytówek v. 13.666 ##################################### Program poprosi cię o wpisanie różnych danych. Po wpisaniu wciśnij Enter by przejść dalej. ##################################### Podaj swoje Imię i Nazwisko: Piotr M Podaj swój adres E-Mail: tajny@email.pl Podaj numer Gadu-Gadu: 123456 ##################################### Pobieranie danych zakończone Generowanie wizytówki zakończone Plik wizytowka.txt gotowy! #####################################
Piotr M Email: tajny@email.pl Gadu-Gadu 123456
Parametry wywołania
Wiele aplikacji przyjmuje parametry, np. ls -a. Bardzo prosto parametry te "przechwycić".#!/bin/bash echo "Nazwa skryptu to: $0" echo '------------------------------------' echo "Nazwa pierwszego argumentu to: $1" echo '------------------------------------' echo "Wszystkie argumenty: $*" echo '------------------------------------' echo "Podałeś $# poleceń"
Nazwa skryptu to: ./a2.sh ------------------------------------ Nazwa pierwszego argumentu to: polecenie1 ------------------------------------ Wszystkie argumenty: polecenie1 polecenie2 polecenie3 ------------------------------------ Podałeś 3 poleceń
Skrypt przykładowy 2 - Generator wizytówki z wyborem pliku
#!/bin/bash echo 'Witaj w generatorze wizytówek v. 13.666' echo '#####################################' echo 'Program poprosi cię o wpisanie różnych danych.' echo 'Po wpisaniu wciśnij Enter by przejść dalej.' echo '#####################################' echo 'Podaj swoje Imię i Nazwisko:' read name echo 'Podaj swój adres E-Mail:' read mail echo 'Podaj numer Gadu-Gadu:' read gg echo '#####################################' echo 'Pobieranie danych zakończone' touch $1 echo "$name" >> $1 echo "Email: $mail" >> $1 echo "Gadu-Gadu $gg" >> $1 echo 'Generowanie wizytówki zakończone' echo "Plik $1 gotowy!" echo '#####################################'
Instrukcje warunkowe
Możemy korzystać z instrukcji warunkowych - Jeżeli coś to wtedy, a jeżeli nie to coś... Porównania i operacje logiczne:
PORÓWNANIA LICZBOWE
Instrukcja warunkowa IF... ma postać:
-gt: większy odPORÓWNANIA TEKSTOWE
-lt: mniejszy od
-ge: większy, równy od
-le: mniejszy, równy od
-eq: równy
-ne: różny od
-z: sprawdza czy ciąg jest pustyOPERACJE LOGICZNE
-n: sprawdza wartość ciągu
=: równy
!=: różny
Str: sprawdza czy ciąg jest zerowy
-a: Logiczne i (zamiast -a można stosować &&)TESTY NA PLIKACH
-o: Logiczne lub (można stosować też ||)
!: Logiczne nie
-f: Plik istnieje i jest zwykłym plikiem
-s: Plik nie jest pusty
-r: Plik jest możliwy do odczytu
-w: Plik może być modyfikowany
-x: Plik może być uruchamiany
-d: Jest katalogiem
-h: Jest dowiązaniem symbolicznym
-c: Nazwa odnosi się do urządzenia
if komenda then akcja fi if komenda then akcja else akcja fi
if [ "$#" -gt 2 ] then echo 'Podałeś więcej niż 2 parametry' else echo 'Podałeś mniej niż 2 parametry' fi
if [ "$#" -gt 2 ] then echo 'Podałeś więcej niż 2 parametry' elif [ "$#" -eq 2 ] then echo 'Podałeś 2 parametry' else echo 'Podałeś mniej niż 2 parametry' fi
if [ "$#" -gt 2 -a "$#" -lt 5 ] then echo 'Podałeś więcej niż 2 parametry' else echo 'Podałeś albo mniej niż 2 parametry lub więcej niż 5' fi
Pętle
- while komenda do akcja done - while wykonuje akcję dopóki komenda ma wartość Prawda (true)- until komenda do akcja done - until wykonuje akcję dopóki komenda ma wartość Fałsz (false)
- for zmienna in lista-wartości do akcja done - Pętla for-in zaprojektowana została do użytku z listami wartości. Są one kolejno przyporządkowywane zmiennej
-for zmienna do akcja done - Odnosi się do argumentów skryptu przyporządkowując je kolejno zmiennej
#!/bin/bash for plik in /home/piotr/* do echo "Plik lub katalog: $plik" done
#!/bin/bash for parametr do echo "Plik $parametr ma hasza:" md5sum $parametr done
#!/bin/bash powtorka = "tak" while [ "$powtorka"==tak ] do echo -n $powtorka echo 'Witaj w generatorze wizytówek v. 13.666' echo '#####################################' echo 'Program poprosi cię o wpisanie różnych danych.' echo 'Po wpisaniu wciśnij Enter by przejść dalej.' echo '#####################################' echo 'Podaj swoje Imię i Nazwisko:' read name echo 'Podaj swój adres E-Mail:' read mail echo 'Podaj numer Gadu-Gadu:' read gg echo '#####################################' echo 'Pobieranie danych zakończone' touch $1 echo "$name" >> $1 echo "Email: $mail" >> $1 echo "Gadu-Gadu $gg" >> $1 echo 'Generowanie wizytówki zakończone' echo "Plik $1 gotowy!" echo '#####################################' echo 'Wpisz "tak" jeżeli chcesz dodać kolejny wpis' read powtorka done
RkBlog
Comment article