|EN?|FR|

Voici les normes à respecter pour contribuer en Shell

Normes de base

On va utiliser des tabulations au lieu d'espaces pour la mise en forme.

{TAB} = Tabulation
  = espace

Les fichiers doivent être au format UNIX et non DOS. C'est à dire pour example que les fins de lignes sont des "\n" et non des "\n\r".

L'encodage des fichiers devra être de préférence en UTF-8.

Les entêtes

Voici comment doit être écrit l'entête d'un fichier :

#!/bin/sh
###################################################################
#Centreon is developped with GPL Licence 2.0 :
#http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
#Developped by : Julien Mathis - Romain Le Merlus
#
#The Software is provided to you AS IS and WITH ALL FAULTS.
#CENTREON makes no representation and gives no warranty whatsoever,
#whether express or implied, and without limitation, with regard to the quality,
#safety, contents, performance, merchantability, non-infringement or suitability for
#any particular or intended purpose of the Software found on the CENTREON web site.
#In no event will CENTREON be liable for any direct, indirect, punitive, special,
#incidental or consequential damages however they may arise and even if CENTREON has
#been previously advised of the possibility of such damages.
#
#For information : contact@centreon.com
###################################################################

#----
## @Synopsis    {DESCRIPTION}
## @Copyright   Copyright 2008, AUTEUR
## @License     GPL v2
## {DESCRIPTION LONGUE}
## ...
## Possibilité d'utilisé les balises
## <p> : retour à la ligne
## <pre> </pre> : pour mettre du texte sous forme de code
## <@function NOM_FONCTION> 
#----

Les variables

Pour le nomage des variables, la norme est que les variables dites globales (utilisée dans tout le script) sont en majuscule.

  • Bon
#!/bin/sh
MAVARIABLE=""
ma_variable=""
mavariable=""

On peut aussi les minuscules, mais on va essayer de les employer pour les flags.

  • Mauvais
#!/bin/sh
MaVariable=""

Les structures de contôles

Les structures de contrôles sont toujours écrites comme suit:

Examples de structues :

#!/bin/sh
# Pour les chaines de caractères
if [ "$TOTO" = "titi" ] ; then 
{TAB}mon_action
elif [ "$TUTU" = "tutu" -a "$TITI" = "titi" ] ; then
{TAB}mon_action2
else
{TAB}mon_action3
fi

# Pour les int
if [ $RC -eq 0 ] ; then
{TAB}mon_action4
elif [ $RC -gt 1 ] ; then 
{TAB}mon_action5
else
{TAB}mon_action6
fi

while [ $TITI = "toto" ] ; do
{TAB}mon_action7
done

case $choise in
{TAB}tutu){TAB}mon_action8
{TAB}{TAB}mon_action9 ;;
{TAB}*){TAB}mon_action9 ;;
esac

Les fonctions

Pour le nomage des fonctions, la norme est que l'on sépare chaque terme de la fonction par un souligné "_", le tout attaché.

  • Bon
#!/bin/sh
function ma_fonction() {
{TAB}definition
}
  • Mauvais
#!/bin/sh
function maFonction() {
{TAB}definition
}

function MaFonction() {
{TAB}definition
}

La documentation comme si dessous :

#!/bin/sh
#---
## {DESCRIPTION_COURTE}
## {DESCRIPTION_LONGUE} (s'il y en a besoin)
## ... on peut utiliser un lien vers une autre fonction avec <@function NOM_FONCTION> 
##
## @param Mon premier argument
## @param Second argument ...
## @return Ce qui est retourné (ex: @return 0 retourne 0 quand la fonction est OK)
## @Globals Les variables globales utilisés
## @Stdout Ce qui est affiché sur la sortie standard
## @Stderr Ce qui est affiché sur la sortie d'erreur
## @Stdin Ce qui est saisie sur l'entrée standard
#----
function ma_function() {
{TAB}local arg1=$1
{TAB}local arg2=$2
{TAB}local args=$@
{TAB}local ret=0
{TAB}actions
{TAB}return $ret
}

/!\ L'ensemble des ces normes reste encore a valider /!\