Każdy skrypt potrzebuje jakieś funkcji opisującej działanie skryptu. Przeważnie umieszczamy w niej dużo echo aby wyświetlić linie z informacjami. Jest jednak inna możliwość, użycie cat i EOF (albo innego znacznika, ważne ze określa początek i koniec tekstu, zwyczajowo jest to EOF – End Of File). Przykład:
function usage() {
cat << EOF
usage: $0 options
description of option 1 - default: $DEFAULT1
It is nice way to create easy long description...
EOF
}
W jednym z poprzednich wpisów pokazałem metodę analizy podanych parametrów przez analizę kolejnych wartości zmiennych $1 itd.
Teraz przyjrzymy się kolejnej metodzie, korzystającej z wbudowanej w Basha funkcji getopts.
Myślałem że coś tam wiem o używaniu Basha, niestety (a raczej stety 😉 ), przyjaciel z pracy pokazał mi dzisiaj jak mało umiem ;). Problem do rozwiązania był prosty: należało sprawdzić adresy IP 20 serwerów. Stwierdziłem, że pisanie skryptu zajmie więcej czasu niż ręczne sprawdzenie ich przy pomocy komendy 'host’. Cóż, rozwiązanie okazało się proste.
Stanąłem dzisiaj przed problemem dość prostym ale zwyczajowo pomijanym w typowych kursach Bash-a w internecie. Otóż jak zrobić warunek if z dwoma lub więcej warunkami? Rozwiązanie jest całkiem proste i oczywiste 😉 :
if [ -z $URL ] && [ -z $FILE ]; then
echo "Brak url (opcja --url) lub pliku (opcja --file) ";
exit 2;
fi
Poniższy skrypt pokazuje jak można w bardzo szybki a zarazem elegancki sposób analizować parametry podane do skryptu bashowego. Dla przypomnienia $# zawiera liczbę argumentów przekazanych do skryptu.
Używając skryptów powłoki, w szczególności napisanych przez kogoś innego, przydatne bywa zobaczenie co ten skrypt naprawdę robi. Najprostszym sposobem jest dodanie poniższej linijki na początek skryptu:
set -x
Dzięki temu każda komenda wykonywana przez skrypt będzie wyświetlania na ekranie! Przykład:
Kilka przydatnych skryptów, jeden pozwala na powiadomienie mail-em gdy dysk się przepełnia, drugi modyfikuje firewall-a na podstawie pliku tekstowego, kolejny robi proste backupy.