2017-12-24 14:13:40 +01:00
|
|
|
## général
|
|
|
|
|
|
|
|
* utf-8
|
|
|
|
* indentation: TABULATION
|
|
|
|
* $() t pas \`
|
|
|
|
* pas de commandes séquentielle avec ;
|
|
|
|
* pas conditions compactes (condition&&action||action), par lisibilité, lors affectation variables
|
|
|
|
* == pour marquer les équivalences, = pour les assignations, bien que = pourraient être utilisées pour
|
|
|
|
les équivalences
|
2018-01-31 00:07:18 +01:00
|
|
|
* même si \[\[ permettrait d'éviter les guillemets, il sont quand même mis par convention, ne serait ce que
|
2017-12-24 14:13:40 +01:00
|
|
|
pour une coloration syntaxique homogène
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## fonctions
|
|
|
|
|
|
|
|
sauf exception (initialisation), les fonctions utilisent ce principe de nommage:
|
|
|
|
|
|
|
|
* f__ : fonctions utilitaires, communes à plusieurs scripts
|
|
|
|
* variables publiques: pas de conventions de nommage pour l'instant (à faire)
|
|
|
|
* à faire : fu_ (Utilité)
|
|
|
|
|
|
|
|
* f_ : fonction généraliste propre au script
|
|
|
|
* variables publiques: AUCUNE
|
|
|
|
|
|
|
|
* fi_ : affichage/présentation
|
|
|
|
* variables publiques: $fe_ (Exception)
|
|
|
|
* éviter les variables publiques
|
|
|
|
* exceptions: sous-fonctions, sortie pour lisibilité, variables n'a pas à respecter le nommage (sous-fonction)
|
|
|
|
|
|
|
|
* figet_ : calculs/préparation
|
|
|
|
* variables publiques: $fg_ (Général)
|
|
|
|
* aucun affichage
|
|
|
|
|
|
|
|
|
|
|
|
## variables
|
|
|
|
|
|
|
|
* toutes les variables internes à la fonction doivent être déclarées en local en tête de fonction
|
|
|
|
* les variables publiques sont signalées en première lignes de commentaire au-dessus de la déclaration de fonction
|
|
|
|
* nommage
|
|
|
|
* fg_ : pour une variable de fonction figet_
|
|
|
|
* fe_ : pour une variable de fonction f_ (attention aux collisions avec un nom de fonction)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### * Note: [[ -n $something ]] - double brackets does not require quotes for variables: ie, "$something".
|
|
|
|
#### * Always use quotes, double or single, for all string values.
|
|
|
|
#### * All new code/methods must be in a function.
|
|
|
|
|
|
|
|
#### * For all boolean tests, use 'true' / 'false'.
|
|
|
|
#### !! Do NOT use 0 or 1 unless it's a function return.
|
|
|
|
#### * Avoid complicated tests in the if condition itself.
|
|
|
|
#### * To 'return' a value in a function, use 'echo <var>'.
|
|
|
|
#### * For gawk: use always if ( num_of_cores > 1 ) { hanging { starter for all blocks
|
|
|
|
#### This lets us use one method for all gawk structures, including BEGIN/END, if, for, etc
|
|
|
|
#### * Using ${VAR} is about 30% slower than $VAR because bash has to check the stuff for actions
|
|
|
|
#### SUBSHELLS ARE EXPENSIVE! - run these two if you do not believe me.
|
|
|
|
#### time for (( i=0; i<1000; i++ )) do ff='/usr/local/bin/foo.pid';ff=${ff##*/};ff=${ff%.*};done;echo $ff
|
|
|
|
#### time for (( i=0; i<1000; i++ )) do ff='/usr/local/bin/foo.pid';ff=$( basename $ff | cut -d '.' -f 1 );done;echo $ff
|