<Précédent | Table des matières | Suivant>
résumer
Avec l'ajout de paramètres positionnels, nous pouvons maintenant écrire des scripts assez fonctionnels. Pour des tâches simples et répétitives, les paramètres positionnels permettent d'écrire des fonctions shell très utiles qui peuvent être placées dans le répertoire d'un utilisateur. .bashrc fichier.
NOTRE sys_info_page programme a gagné en complexité et en sophistication. Voici une liste complète, avec les changements les plus récents mis en évidence :
#! / Bin / bash
# sys_info_page : programme pour afficher une page d'informations système
NOMPROG=$(nom de base $0)
TITLE="Rapport d'informations système pour $HOSTNAME" CURRENT_TIME=$(date +"%x %r %Z")
TIMESTAMP="Généré $CURRENT_TIME, par $USER"
report_uptime () { chat <<- _EOF_
Temps de disponibilité du système
$(temps de disponibilité)
_EOF_ retour
#! / Bin / bash
# sys_info_page : programme pour afficher une page d'informations système
NOMPROG=$(nom de base $0)
TITLE="Rapport d'informations système pour $HOSTNAME" CURRENT_TIME=$(date +"%x %r %Z")
TIMESTAMP="Généré $CURRENT_TIME, par $USER"
report_uptime () { chat <<- _EOF_
Temps de disponibilité du système
$(temps de disponibilité)
_EOF_ retour
}
report_disk_space () { chat <<- _EOF_
Utilisation de l'espace disque
$(df -h)
_EOF_ retour
}
report_home_space () {
if [[ $(id -u) -eq 0 ]] ; puis chat <<- _EOF_
Utilisation de l'espace domestique (tous les utilisateurs)
$(du -sh /home/*)
_EOF_
d'autre
chat <<- _EOF_
Utilisation de l'espace domestique ($USER)
$(du -sh $HOME)
_EOF_
fi retour
}
utilisation () {
echo "$NOMPROG : utilisation : $NOMPROG [-f fichier | -i]" return
}
write_html_page () { chat <<- _EOF_
$ TITRE
$ TITRE
$TIMESTAMP
$(report_uptime)
$(espace_disque_rapport)
$(report_home_space)
_EOF_ retour
}
# traiter les options de ligne de commande
}
report_disk_space () { chat <<- _EOF_
Utilisation de l'espace disque
$(df -h)
_EOF_ retour
}
report_home_space () {
if [[ $(id -u) -eq 0 ]] ; puis chat <<- _EOF_
Utilisation de l'espace domestique (tous les utilisateurs)
$(du -sh /home/*)
_EOF_
d'autre
chat <<- _EOF_
Utilisation de l'espace domestique ($USER)
$(du -sh $HOME)
_EOF_
fi retour
}
utilisation () {
echo "$NOMPROG : utilisation : $NOMPROG [-f fichier | -i]" return
}
write_html_page () { chat <<- _EOF_
$ TITRE
$ TITRE
$TIMESTAMP
$(report_uptime)
$(espace_disque_rapport)
$(report_home_space)
_EOF_ retour
}
# traiter les options de ligne de commande
résumer
interactif=
nom de fichier=
tandis que [[ -n $1 ]]; ne cas 1 $ dans
-f | --déposer)
décalage
nom de fichier=$1
;;
interactif=
nom de fichier=
tandis que [[ -n $1 ]]; ne cas 1 $ dans
-f | --déposer)
-je | --interactive) interactive=1
;;
-h | --help) sortie d'utilisation
;;
*) utilisation >&2
sortie 1
;;
décalage esac
fait
# mode interactif
if [[ -n $interactif ]] ; alors tandis que vrai ; faire
read -p "Entrez le nom du fichier de sortie : " filename if [[ -e $filename ]] ; alors
read -p "'$filename' existe. Écraser? [y/n/q] > " case $REPLY in
Y|y) pause
;;
Q|q) echo "Programme terminé." sortir
;;
*) Continuez
;;
Esac
elif [[ -z $filename ]] ; puis continue
d'autre
pause
fi
fait
fi
# page html de sortie
if [[ -n $filename ]] ; alors
si vous touchez $filename && [[ -f $filename ]]; puis write_html_page > $filename
d'autre
-je | --interactive) interactive=1
;;
-h | --help) sortie d'utilisation
;;
*) utilisation >&2
sortie 1
;;
décalage esac
fait
# mode interactif
if [[ -n $interactif ]] ; alors tandis que vrai ; faire
read -p "Entrez le nom du fichier de sortie : " filename if [[ -e $filename ]] ; alors
read -p "'$filename' existe. Écraser? [y/n/q] > " case $REPLY in
Y|y) pause
;;
Q|q) echo "Programme terminé." sortir
;;
*) Continuez
;;
Esac
elif [[ -z $filename ]] ; puis continue
d'autre
pause
fi
fait
fi
# page html de sortie
if [[ -n $filename ]] ; alors
si vous touchez $filename && [[ -f $filename ]]; puis write_html_page > $filename
d'autre
echo "$PROGNAME : Impossible d'écrire le fichier '$filename'" >&2 exit 1
fi d'autre
écrire_html_page
fi
echo "$PROGNAME : Impossible d'écrire le fichier '$filename'" >&2 exit 1
fi d'autre
écrire_html_page
fi
Nous n'avons pas encore fini. Il y a encore plus de choses que nous pouvons faire et des améliorations que nous pouvons apporter.