base_template.bash
· 2.2 KiB · Bash
Raw
#!/usr/bin/env bash
# sécurisation de l'éxécution (mode strict)
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
#IFS=$'\n\t' # gestion des espaces dans les lignes si besoin
##
## 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 de type "clef=valeur"
##
# 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 !!!
| 1 | #!/usr/bin/env bash |
| 2 | |
| 3 | # sécurisation de l'éxécution (mode strict) |
| 4 | set -e # plante le batch sur une erreur lors de l'éxécution (pas besoin de traiter le return code pour ça) |
| 5 | set -u # plante le batch si on utilise une variable non défini |
| 6 | set -o pipefail # plante le batch si une commande dans un pipe plante |
| 7 | |
| 8 | #IFS=$'\n\t' # gestion des espaces dans les lignes si besoin |
| 9 | |
| 10 | ## |
| 11 | ## Bloc des fonctions |
| 12 | ## |
| 13 | |
| 14 | function utilisation |
| 15 | { |
| 16 | echo "Aide du programme" |
| 17 | echo "mon_prog [OPTION] ..." |
| 18 | echo " -a, --append, append... [obligatoire]" |
| 19 | echo " -e, --exec, execute..." |
| 20 | echo "" |
| 21 | } |
| 22 | |
| 23 | function controle_parm |
| 24 | { |
| 25 | if [[ -z "$a" ]] then |
| 26 | echo "append non défini" |
| 27 | utilisation |
| 28 | return 1 |
| 29 | fi |
| 30 | } |
| 31 | |
| 32 | ## |
| 33 | ## Chargement des valeurs par défaut |
| 34 | ## |
| 35 | |
| 36 | config_fic=~/mon_scriptrc.cfg |
| 37 | tmp_cfg=/tmp/mon_scriptrc.cfg.tmp |
| 38 | b="blabla" |
| 39 | c="machine" |
| 40 | |
| 41 | ## |
| 42 | ## gestion d'un fichier de configuration de type "clef=valeur" |
| 43 | ## |
| 44 | |
| 45 | # si le fichier de config existe |
| 46 | if [[ -f $config_fic ]] then |
| 47 | # suppression des lignes commençant par un # |
| 48 | grep "^#" $config_fic > $tmp_cfg |
| 49 | # traitement du fichier |
| 50 | while read ligne |
| 51 | do |
| 52 | parm=$(echo $ligne | awk -F "=" '{print $1;}') |
| 53 | val=$(echo $ligne | awk -F "=" '{print $2;}') |
| 54 | # ici, on va placer les valeurs attendu du fichier de configuration |
| 55 | # Le fichier de conf étant de la forme parm=val |
| 56 | # parm) |
| 57 | # parm=$val; |
| 58 | |
| 59 | case $parm in |
| 60 | append) |
| 61 | a=$val; |
| 62 | ;; |
| 63 | |
| 64 | *) |
| 65 | echo "parametre $parm inconnue..." |
| 66 | exit 1 |
| 67 | ;; |
| 68 | esac |
| 69 | done < $tmp_cfg |
| 70 | # suppression du fichier temporaire |
| 71 | rm $tmp_cfg |
| 72 | fi |
| 73 | |
| 74 | ## |
| 75 | ## gestion de paramètre en entrée saisie par l'opérateur |
| 76 | ## |
| 77 | |
| 78 | while [[ $# -gt 0 ]] |
| 79 | do |
| 80 | case $1 in |
| 81 | -a|--append) |
| 82 | shift; |
| 83 | a=$1; |
| 84 | shift; |
| 85 | ;; |
| 86 | |
| 87 | -e|--exec) |
| 88 | exec ; |
| 89 | shift; |
| 90 | ;; |
| 91 | |
| 92 | *) |
| 93 | echo "parametre $1 inconnue"; |
| 94 | shift; |
| 95 | ;; |
| 96 | esac |
| 97 | done |
| 98 | |
| 99 | ## |
| 100 | ## contrôle des paramètres obligatoires |
| 101 | ## |
| 102 | |
| 103 | controle_parm |
| 104 | if [[ $? -eq 1 ]] then |
| 105 | exit 1 |
| 106 | fi |
| 107 | |
| 108 | ## |
| 109 | ## début du script |
| 110 | ## |
| 111 | |
| 112 | ## |
| 113 | ## fin du script |
| 114 | ## |
| 115 | |
| 116 | return $RC; # pensez au return code !!! |
| 117 |