Script De Base Pour Bash
Je présente ici le point de départ pour un script Bash à même de gérer un fichier de configuration, des paramètres par défaut ainsi que des paramètres fourni au lancement
#!/usr/bin/bash
# sécurisation de l'éxécution
set -e # plante le batch sur une erreur lors de l'éxécution (pas besoin de traiter le return code pour ça)
set -u # plante le batch si on utilise une variable non défini
set -o pipefail # plante le batch si une commande dans un pipe plante
##
## Bloc des fonctions
##
function utilisation
{
echo "Aide du programme"
echo "mon_prog [OPTION] ..."
echo " -a, --append, append... [obligatoire]"
echo " -e, --exec, execute..."
echo ""
}
function controle_parm
{
if [[ -z "$a" ]] then
echo "append non défini"
utilisation
return 1
fi
}
##
## Chargement des valeurs par défaut
##
config_fic=~/mon_scriptrc.cfg
tmp_cfg=/tmp/mon_scriptrc.cfg.tmp
b="blabla"
c="machine"
##
## gestion d'un fichier de configuration
##
# si le fichier de config existe
if [[ -f $config_fic ]] then
# suppression des lignes commençant par un #
grep "^#" $config_fic > $tmp_cfg
# traitement du fichier
while read ligne
do
parm=$(echo $ligne | awk -F "=" '{print $1;}')
val=$(echo $ligne | awk -F "=" '{print $2;}')
# ici, on va placer les valeurs attendu du fichier de configuration
# Le fichier de conf étant de la forme parm=val
# parm)
# parm=$val;
case $parm in
append)
a=$val;
;;
*)
echo "parametre $parm inconnue..."
exit 1
;;
esac
done < $tmp_cfg
# suppression du fichier temporaire
rm $tmp_cfg
fi
##
## gestion de paramètre en entrée saisie par l'opérateur
##
while [[ $# -gt 0 ]]
do
case $1 in
-a|--append)
shift;
a=$1;
shift;
;;
-e|--exec)
exec ;
shift;
;;
*)
echo "parametre $1 inconnue";
shift;
;;
esac
done
##
## contrôle des paramètres obligatoires
##
controle_parm
if [[ $? -eq 1 ]] then
exit 1
fi
##
## début du script
##
##
## fin du script
##
return $RC; # pensez au return code !!!