<Precedenti | Contenuti | Succ.>
Riassumendo
Con l'aggiunta di parametri posizionali, ora possiamo scrivere script abbastanza funzionali. Per compiti semplici e ripetitivi, i parametri posizionali consentono di scrivere funzioni di shell molto utili che possono essere collocate in un utente .bashrc file.
Il nostro sys_info_page programma è cresciuto in complessità e raffinatezza. Ecco un elenco completo, con le modifiche più recenti evidenziate:
#! / Bin / bash
# sys_info_page: programma per generare una pagina di informazioni di sistema
NOMEPROG=$(nome base $0)
TITLE="Rapporto informazioni di sistema per $HOSTNAME" CURRENT_TIME=$(data +"%x %r %Z")
TIMESTAMP="Generato $CURRENT_TIME, da $USER"
report_uptime () { cat <<- _EOF_
Tempo di attività del sistema
$(tempo di attività)
_EOF_ ritorno
#! / Bin / bash
# sys_info_page: programma per generare una pagina di informazioni di sistema
NOMEPROG=$(nome base $0)
TITLE="Rapporto informazioni di sistema per $HOSTNAME" CURRENT_TIME=$(data +"%x %r %Z")
TIMESTAMP="Generato $CURRENT_TIME, da $USER"
report_uptime () { cat <<- _EOF_
Tempo di attività del sistema
$(tempo di attività)
_EOF_ ritorno
}
report_disk_space () { cat <<- _EOF_
Utilizzo dello spazio su disco
$(df-h)
_EOF_ ritorno
}
report_home_space() {
if [[ $(id -u) -eq 0 ]]; poi gatto <<- _EOF_
Utilizzo dello spazio domestico (tutti gli utenti)
$(du -sh /home/*)
_EOF_
altro
gatto <<- _EOF_
Utilizzo dello spazio domestico ($USER)
$(du -sh $HOME)
_EOF_
fi ritorno
}
utilizzo () {
echo "$NOMEPROG: use: $NOMEPROG [-f file | -i]" return
}
write_html_page () { cat <<- _EOF_
$TITLE
$TITLE
$TIMESTAMP
$(rapporto_tempo di attività)
$(report_spazio_disco)
$(rapporto_casa_spazio)
_EOF_ ritorno
}
# elabora le opzioni della riga di comando
}
report_disk_space () { cat <<- _EOF_
Utilizzo dello spazio su disco
$(df-h)
_EOF_ ritorno
}
report_home_space() {
if [[ $(id -u) -eq 0 ]]; poi gatto <<- _EOF_
Utilizzo dello spazio domestico (tutti gli utenti)
$(du -sh /home/*)
_EOF_
altro
gatto <<- _EOF_
Utilizzo dello spazio domestico ($USER)
$(du -sh $HOME)
_EOF_
fi ritorno
}
utilizzo () {
echo "$NOMEPROG: use: $NOMEPROG [-f file | -i]" return
}
write_html_page () { cat <<- _EOF_
$TITLE
$TITLE
$TIMESTAMP
$(rapporto_tempo di attività)
$(report_spazio_disco)
$(rapporto_casa_spazio)
_EOF_ ritorno
}
# elabora le opzioni della riga di comando
Riassumendo
interattivo=
nome file=
mentre [[ -n $1 ]]; fai caso $ 1 in
-f | --file)
spostamento
nomefile=$1
;;
interattivo=
nome file=
mentre [[ -n $1 ]]; fai caso $ 1 in
-f | --file)
-i | --interactive) interattivo=1
;;
-h | --help) uscita dall'utilizzo
;;
*) utilizzo >&2
esci da 1
;;
esac turno
fatto
# modalità interattiva
if [[ -n $interattivo ]]; quindi mentre è vero; fare
read -p "Inserisci il nome del file di output: " filename if [[ -e $filename ]]; poi
read -p "'$nomefile' esiste. Sovrascrivere? [y/n/q] > " case $REPLY in
Y|y) pausa
;;
Q|q) echo "Programma terminato." Uscita
;;
*) Continua
;;
che C
elif [[ -z $nomefile ]]; poi continua
altro
rompere
fi
fatto
fi
# output pagina html
if [[ -n $nomefile ]]; poi
if touch $nomefile && [[ -f $nomefile ]]; quindi scrivi_pagina_html > $nomefile
altro
-i | --interactive) interattivo=1
;;
-h | --help) uscita dall'utilizzo
;;
*) utilizzo >&2
esci da 1
;;
esac turno
fatto
# modalità interattiva
if [[ -n $interattivo ]]; quindi mentre è vero; fare
read -p "Inserisci il nome del file di output: " filename if [[ -e $filename ]]; poi
read -p "'$nomefile' esiste. Sovrascrivere? [y/n/q] > " case $REPLY in
Y|y) pausa
;;
Q|q) echo "Programma terminato." Uscita
;;
*) Continua
;;
che C
elif [[ -z $nomefile ]]; poi continua
altro
rompere
fi
fatto
fi
# output pagina html
if [[ -n $nomefile ]]; poi
if touch $nomefile && [[ -f $nomefile ]]; quindi scrivi_pagina_html > $nomefile
altro
echo "$PROGNAME: Impossibile scrivere il file '$filename'" >&2 exit 1
per altro
write_html_pagina
fi
echo "$PROGNAME: Impossibile scrivere il file '$filename'" >&2 exit 1
per altro
write_html_pagina
fi
Non abbiamo ancora finito. Ci sono ancora più cose che possiamo fare e miglioramenti che possiamo apportare.