Voici quelques notes sur les bonnes pratiques de création de script sh

Information diverses

  • Vérificateur de script : https://www.shellcheck.net
  • Boite de dialogue : https://morgan-durand.com/creer-des-boites-de-dialogues-en-bash/
  • Faire des menu : http://www.quennec.fr/trucs-astuces/syst%C3%A8mes/gnulinux/programmation-shell-sous-gnulinux/aspects-avanc%C3%A9s-de-la-programmation-shell/gestion-de-menu-avec-select
  • Algorythme de tri : https://fr.wikipedia.org/wiki/Tri_rapide

Si besoin de debug

  • Activer l’option set -x ou utiliser bash -x
  • Rediriger les sorties vers un fichier : nom_appli.sh &> monfichier

Bonne pratique

Source : http://fahdshariff.blogspot.fr/2013/10/shell-scripting-best-practices.html

Ces bonnes pratiques ont été inclut dans les templates

  1. Nommer son script avec l’extension « .sh » (facilite la recherche)
  2. Shabang : #!/bin/bash
  3. Ne pas oublier de mettre des quotes a ses paramètres
  4. Documenter les fonctions exemple : # $1 – the name of the input file
  5. Finir son script par exit 0
  6. declare -r var
  7. Lock du fichier
  8. utiliser le set -e
  9. Utiliser $(command1) plutot que a=`command1`
  10. Log
    1. Si vous utilisez syslog-ng/rsyslog utiliser logger
    2. Si vous n’utiliser pas ces solutions :
      1. exec 1>>/var/log/sauvegarde_differentielle.log
      2. exec 2>>/var/log/sauvegarde_differentielle_error.log
    3. Afficher logger
      1. echo logger afin d’afficher dans le terminal
  11. (facultatif ) module de prerequis

Template de script de base

Voici deux templates pour l’utilisation des scripts un avec Logger et l’autre sans utilisation de logger

Commande de script

Aide : http://www.quennec.fr/trucs-astuces/syst%C3%A8mes/gnulinux/programmation-shell-sous-gnulinux/aspects-avanc%C3%A9s-de-la-programmation-shell/tableaux

Variables

  • var=val ou var= »a b » : Affectation de la variable « var »
  • $var ou ${var} : Contenu de la variable « var »
  • ${#var} : Longueur de la varaible « var »
  • $? : Code retour de la dernière commande

Tableaux

  • tab[0]=val : Affectation du premier enregistrement du tableau « tab »
  • ${tab[0]} ou $tab : Contenu du premier enregistrement du tableau « tab »
  • ${tab[11]} : Contenu du douzième enregistrement du tableau « tab »
  • ${tab[*]} : Ensemble des enregistrement du tableau « tab »
  • ${#tab[11]} : Longueur du douzième enregistrement du tableau « tab »
  • ${#tab[*]} : Nombre d’enregistrement du tableau « tab »

Fonction

Exemple pour un if et un for

if commande1
then
commande2
commande3

else
commande4

fi

HTML

Exemple pour un for

for var in $variable
do
commande
done