<Poprzedni | Spis treści | Następne>
Reasumując
With the addition of positional parameters, we can now write fairly functional scripts. For simple, repetitive tasks, positional parameters make it possible to write very useful shell functions that can be placed in a user’s .bashrc plik.
Nasi sys_info_page program has grown in complexity and sophistication. Here is a complete listing, with the most recent changes highlighted:
#! / bin / bash
# sys_info_page: program to output a system information page
PROGNAME=$(basename $0)
TITLE="Raport informacji o systemie dla $HOSTNAME" CURRENT_TIME=$(data +"%x %r %Z")
TIMESTAMP="Wygenerowano $CURRENT_TIME, przez $USER"
report_uptime () { cat <<- _EOF_
Czas pracy systemu
$(czas pracy)
_EOF_ powrót
#! / bin / bash
# sys_info_page: program to output a system information page
PROGNAME=$(basename $0)
TITLE="Raport informacji o systemie dla $HOSTNAME" CURRENT_TIME=$(data +"%x %r %Z")
TIMESTAMP="Wygenerowano $CURRENT_TIME, przez $USER"
report_uptime () { cat <<- _EOF_
Czas pracy systemu
$(czas pracy)
_EOF_ powrót
}
report_disk_space () { cat <<- _EOF_
Wykorzystanie miejsca na dysku
$(df-h)
_EOF_ powrót
}
report_home_space () {
jeśli [[ $(id -u) -eq 0 ]]; następnie kot <<- _EOF_
Wykorzystanie miejsca w domu (wszyscy użytkownicy)
$(du -sz /dom/*)
_EOF_
więcej
kot <<- _EOF_
Wykorzystanie miejsca w domu ($USER)
$(du -sh $HOME)
_EOF_
do powrotu
}
użycie () {
echo "$PROGNAME: użycie: $PROGNAME [-f plik | -i]" return
}
napisz_stronę_html() { kot <<- _EOF_
$TYTUŁ
$TYTUŁ
$ZNACZNIK CZASOWY
$(czas_działania raportu)
$(przestrzeń_dysku_raportu)
$(przestrzeń_domowa_raportu)
_EOF_ powrót
}
# process command line options
}
report_disk_space () { cat <<- _EOF_
Wykorzystanie miejsca na dysku
$(df-h)
_EOF_ powrót
}
report_home_space () {
jeśli [[ $(id -u) -eq 0 ]]; następnie kot <<- _EOF_
Wykorzystanie miejsca w domu (wszyscy użytkownicy)
$(du -sz /dom/*)
_EOF_
więcej
kot <<- _EOF_
Wykorzystanie miejsca w domu ($USER)
$(du -sh $HOME)
_EOF_
do powrotu
}
użycie () {
echo "$PROGNAME: użycie: $PROGNAME [-f plik | -i]" return
}
napisz_stronę_html() { kot <<- _EOF_
$TYTUŁ
$TYTUŁ
$ZNACZNIK CZASOWY
$(czas_działania raportu)
$(przestrzeń_dysku_raportu)
$(przestrzeń_domowa_raportu)
_EOF_ powrót
}
# process command line options
Reasumując
interactive=
nazwapliku=
podczas gdy [[ -n $1 ]]; wykonaj przypadek $1 w
-f | --plik)
przesunięcie
nazwapliku=$1
;;
interactive=
nazwapliku=
podczas gdy [[ -n $1 ]]; wykonaj przypadek $1 w
-f | --plik)
-i | --interactive) interaktywny=1
;;
-h | --help) użycie wyjścia
;;
*) użycie >&2
wyjście 1
;;
esac shift
zrobić
# tryb interaktywny
jeśli [[ -n $interactive ]]; wtedy gdy prawda; wykonaj
przeczytaj -p "Podaj nazwę pliku wyjściowego: " filename jeśli [[ -e $filename ]]; wtedy
przeczytaj -p "'$filename' istnieje. Nadpisz? [t/n/q] > " przypadek $REPLY w
Y|y) przerwa
;;
Q|q) echo "Program zakończony." exit
;;
*) Kontynuować
;;
to C
elif [[ -z $filename ]]; następnie kontynuuj
więcej
złamać
fi
zrobić
fi
# wyjściowa strona html
jeśli [[ -n $filename ]]; wtedy
jeśli dotknij $filename && [[ -f $filename ]]; wtedy write_html_page > $filename
więcej
-i | --interactive) interaktywny=1
;;
-h | --help) użycie wyjścia
;;
*) użycie >&2
wyjście 1
;;
esac shift
zrobić
# tryb interaktywny
jeśli [[ -n $interactive ]]; wtedy gdy prawda; wykonaj
przeczytaj -p "Podaj nazwę pliku wyjściowego: " filename jeśli [[ -e $filename ]]; wtedy
przeczytaj -p "'$filename' istnieje. Nadpisz? [t/n/q] > " przypadek $REPLY w
Y|y) przerwa
;;
Q|q) echo "Program zakończony." exit
;;
*) Kontynuować
;;
to C
elif [[ -z $filename ]]; następnie kontynuuj
więcej
złamać
fi
zrobić
fi
# wyjściowa strona html
jeśli [[ -n $filename ]]; wtedy
jeśli dotknij $filename && [[ -f $filename ]]; wtedy write_html_page > $filename
więcej
echo "$PROGNAME: Nie można zapisać pliku '$filename'" >&2 exit 1
fi inny
napisz_stronę_html
fi
echo "$PROGNAME: Nie można zapisać pliku '$filename'" >&2 exit 1
fi inny
napisz_stronę_html
fi
We’re not done yet. There are still more things we can do and improvements we can make.