Algorythme utile : https://fr.wikipedia.org/wiki/Tri_rapide

Voici un template pour faire vos scripts :

  • Des exemples ont été mis pour un if et un for

[pastacode lang= »bash » manual= »touch%20nom_appli.sh » message= » » highlight= » » provider= »manual »/]

Logger

https://github.com/blop03/script-infra_perso/blob/master/backup_bdd_mariadb_logger.sh

Si besoin de debug :

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

Information diverses

Variables

var=val ou var="a b"   affectation de la variable « var »
$var ou ${var}   contenu de la variable « var »
${#var}   longueur de la variable « var »

$?   code retour de la dernière commande

Tableaux

  • source : http://www.quennec.fr/trucs-astuces/syst%C3%A8mes/gnulinux/programmation-shell-sous-gnulinux/aspects-avanc%C3%A9s-de-la-programmation-shell/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 enregistrements du tableau « tab »
${#tab[11]}   longueur du douzième enregistrement du tableau « tab »
${#tab[*]}   nombre d’enregistrements du tableau « tab »

fonction

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

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. Lock du fichier
  7. utiliser le set -e
  8. Utiliser $(command1) plutot que a=command1
  9. 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
  10. (facultatif ) module de prerequis