"Conversion README en markdown"
This commit is contained in:
parent
cd79ff47e3
commit
4ef22e61ec
351
README.md
351
README.md
@ -1,6 +1,6 @@
|
|||||||
# Aide memoire pour l'écriture de scripts avec le socle bash
|
# Aide memoire pour l'écriture de scripts avec le socle bash
|
||||||
|
|
||||||
* Sommaire
|
* Sommaire
|
||||||
* I - Arborescence du socle
|
* I - Arborescence du socle
|
||||||
* II - Variables d'environement
|
* II - Variables d'environement
|
||||||
* 1 - Variables globales
|
* 1 - Variables globales
|
||||||
@ -30,14 +30,14 @@
|
|||||||
* 9 - fct\_params
|
* 9 - fct\_params
|
||||||
|
|
||||||
|
|
||||||
## I - Arborescence du socle
|
## I - Arborescence du socle
|
||||||
|
|
||||||
La racine des dossiers utilisée par le Socle Bash est définie par la variable d'environement NC\_EXPL\_ROOT.
|
La racine des dossiers utilisée par le Socle Bash est définie par la variable d'environement NC\_EXPL\_ROOT.
|
||||||
Cette dernière est initialisée à la connexion par l'appel au script /etc/profile.d/tetalab.sh
|
Cette dernière est initialisée à la connexion par l'appel au script /etc/profile.d/tetalab.sh
|
||||||
Cette arborescence est utilisée pour tous scripts Bash ainsi que les variables d'environement qui
|
Cette arborescence est utilisée pour tous scripts Bash ainsi que les variables d'environement qui
|
||||||
en découlent.
|
en découlent.
|
||||||
|
|
||||||
Sous l'arborescence ${NC\_EXPL\_ROOT} on trouve les dossiers suivants :
|
Sous l'arborescence ${NC\_EXPL\_ROOT} on trouve les dossiers suivants :
|
||||||
|
|
||||||
+-----------------+-----------------------------------------------------------------------------------------------+
|
+-----------------+-----------------------------------------------------------------------------------------------+
|
||||||
| Dossier | Description |
|
| Dossier | Description |
|
||||||
@ -57,32 +57,32 @@ Sous l'arborescence ${NC\_EXPL\_ROOT} on trouve les dossiers suivants :
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Note : Sous chaque dossier vous trouverez un fichier texte lisezmoi.txt decrivant l'usage du répertoire.
|
Note : Sous chaque dossier vous trouverez un fichier texte lisezmoi.txt decrivant l'usage du répertoire.
|
||||||
|
|
||||||
|
|
||||||
## II - Variables d'environement
|
## II - Variables d'environement
|
||||||
|
|
||||||
Le socle utilise deux groupes de variables. Le premier dit "global" le second "de session".
|
Le socle utilise deux groupes de variables. Le premier dit "global" le second "de session".
|
||||||
Sauf si explicite, les variables globales sont définies et exportées à la connexion. Elles sont donc utilisables
|
Sauf si explicite, les variables globales sont définies et exportées à la connexion. Elles sont donc utilisables
|
||||||
par tous les scripts, mais elles ne sont pas modifiables.
|
par tous les scripts, mais elles ne sont pas modifiables.
|
||||||
|
|
||||||
Les variables de session sont définies à l'execution d'un script et lui sont propres.
|
Les variables de session sont définies à l'execution d'un script et lui sont propres.
|
||||||
Cependent certaines d'entre elles sont transmises aux scripts enfants:
|
Cependent certaines d'entre elles sont transmises aux scripts enfants:
|
||||||
- SH\_SESSION\_ID, SH\_FICLOG, SH\_FICCPT, SH\_RETENTION\_CPT, SH\_RETENTION\_LOG, SH\_NIV\_DEBUG, SH\_SILENCE, SH\_AFF\_SID
|
- SH\_SESSION\_ID, SH\_FICLOG, SH\_FICCPT, SH\_RETENTION\_CPT, SH\_RETENTION\_LOG, SH\_NIV\_DEBUG, SH\_SILENCE, SH\_AFF\_SID
|
||||||
|
|
||||||
Les variables de session sont modifiable à 2 niveaux. De facon global dans le fichier "init.conf" ou pour un script
|
Les variables de session sont modifiable à 2 niveaux. De facon global dans le fichier "init.conf" ou pour un script
|
||||||
particulier dans le fichier ${NC\_EXPL\_CFG}/<Nom\_du\_script>.conf.
|
particulier dans le fichier ${NC\_EXPL\_CFG}/<Nom\_du\_script>.conf.
|
||||||
|
|
||||||
La valeur définie dans "init.conf" sera utlisée sauf si elle a été surchargée dans le fichier de configuration du
|
La valeur définie dans "init.conf" sera utlisée sauf si elle a été surchargée dans le fichier de configuration du
|
||||||
script.
|
script.
|
||||||
|
|
||||||
Il y a cependant une spécificite pour SH\_RETENTION\_CPT et SH\_RETENTION\_LOG:
|
Il y a cependant une spécificite pour SH\_RETENTION\_CPT et SH\_RETENTION\_LOG:
|
||||||
- ces variables sont definies une et une seule fois lors de la première initialisation. Ce qui signinfie qu'un
|
- ces variables sont definies une et une seule fois lors de la première initialisation. Ce qui signinfie qu'un
|
||||||
script qui aurait surchargé ces variables, ignorera l'initialisation de ces variable si il est appelé par un
|
script qui aurait surchargé ces variables, ignorera l'initialisation de ces variable si il est appelé par un
|
||||||
autre script.
|
autre script.
|
||||||
|
|
||||||
|
|
||||||
### 1 - Variables globales générales
|
### 1 - Variables globales générales
|
||||||
|
|
||||||
+-------------------+----------------------------+
|
+-------------------+----------------------------+
|
||||||
| Nom | Usage |
|
| Nom | Usage |
|
||||||
@ -106,13 +106,13 @@ Il y a cependant une spécificite pour SH\_RETENTION\_CPT et SH\_RETENTION\_LOG:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Les variables NC\_EXPL\_ROOT, EXPL\_ROOT et NC\_EXPL\_SRVBATCH sont définies dans le fichier "tetalab.sh"
|
Les variables NC\_EXPL\_ROOT, EXPL\_ROOT et NC\_EXPL\_SRVBATCH sont définies dans le fichier "tetalab.sh"
|
||||||
Les autres variables NC\_* sont définies dans le fichier "profile\_init.env"
|
Les autres variables NC\_* sont définies dans le fichier "profile\_init.env"
|
||||||
|
|
||||||
|
|
||||||
### 2 - Variables de session
|
### 2 - Variables de session
|
||||||
|
|
||||||
Cette liste n'est pas exhaustive, seules les principales variables sont citées.
|
Cette liste n'est pas exhaustive, seules les principales variables sont citées.
|
||||||
|
|
||||||
+--------------------+-------------------------------------------------------------------------------+
|
+--------------------+-------------------------------------------------------------------------------+
|
||||||
| Nom | Usage |
|
| Nom | Usage |
|
||||||
@ -137,17 +137,17 @@ Cette liste n'est pas exhaustive, seules les principales variables sont citées.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Remarque : Les variables SH\_SILENCE et SH\_NIV\_DEBUG sont controlées par les options "-s" et "-dbg"
|
Remarque : Les variables SH\_SILENCE et SH\_NIV\_DEBUG sont controlées par les options "-s" et "-dbg"
|
||||||
si la gestion des options a été activée.
|
si la gestion des options a été activée.
|
||||||
|
|
||||||
|
|
||||||
## III - Utilisation du socle bash
|
## III - Utilisation du socle bash
|
||||||
|
|
||||||
Cette partie décrit sommairement les quelques règles d'usage pour écrire un script Bash avec le socle.
|
Cette partie décrit sommairement les quelques règles d'usage pour écrire un script Bash avec le socle.
|
||||||
|
|
||||||
### 1 - Cartouche
|
### 1 - Cartouche
|
||||||
|
|
||||||
Les scripts doivent commencer par le cartouche ci-dessous :
|
Les scripts doivent commencer par le cartouche ci-dessous :
|
||||||
|
|
||||||
+----------------------------------------------------------------------------------------------------+
|
+----------------------------------------------------------------------------------------------------+
|
||||||
| |
|
| |
|
||||||
@ -192,59 +192,59 @@ Les scripts doivent commencer par le cartouche ci-dessous :
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Note : Les lignes commençant par 2 "#" sont utilisées pour générer l'aide, leur maintient est donc nécéssaire
|
Note : Les lignes commençant par 2 "#" sont utilisées pour générer l'aide, leur maintient est donc nécéssaire
|
||||||
pour garantir la fiabilité de l'information. Ce sont ces lignes, qui sont lues lors de l'utilisation de
|
pour garantir la fiabilité de l'information. Ce sont ces lignes, qui sont lues lors de l'utilisation de
|
||||||
l'option par defaut "-h".
|
l'option par defaut "-h".
|
||||||
|
|
||||||
#### 1.1 Elements du cartouche
|
#### 1.1 Elements du cartouche
|
||||||
|
|
||||||
##### 1.1.1 Meta-données
|
##### 1.1.1 Meta-données
|
||||||
|
|
||||||
<Action> : peut prendre les valeurs suivantes -> cre, ano, evo, typo
|
<Action> : peut prendre les valeurs suivantes -> cre, ano, evo, typo
|
||||||
* cre : Création du script.
|
* cre : Création du script.
|
||||||
* evo : Évolution du script -> Ajout de nouvelles fonctionnalités, Amélioration du code.
|
* evo : Évolution du script -> Ajout de nouvelles fonctionnalités, Amélioration du code.
|
||||||
* ano : Correction du code suite à un comportement inattendu.
|
* ano : Correction du code suite à un comportement inattendu.
|
||||||
* typo : Ajout de commentaires, de texte ou corrections gramaticales sans influence sur le code.
|
* typo : Ajout de commentaires, de texte ou corrections gramaticales sans influence sur le code.
|
||||||
|
|
||||||
<Auteur> : <Prenom> <Nom>
|
<Auteur> : <Prenom> <Nom>
|
||||||
|
|
||||||
<Version> : Format x.y.z
|
<Version> : Format x.y.z
|
||||||
Pour le suivi des versions on utilisera le versionnement sémantique (voir paragraphe III-1.2).
|
Pour le suivi des versions on utilisera le versionnement sémantique (voir paragraphe III-1.2).
|
||||||
|
|
||||||
##### 1.1.2 Paragraphe
|
##### 1.1.2 Paragraphe
|
||||||
|
|
||||||
* Mise a jour : Ce paragraphe est utilisé pour suivre l'evolution des versions. La dernière version en
|
* Mise a jour : Ce paragraphe est utilisé pour suivre l'evolution des versions. La dernière version en
|
||||||
vigueur doit être reportée dans le premier paragraphe.
|
vigueur doit être reportée dans le premier paragraphe.
|
||||||
|
|
||||||
* Dependance : Permêt de définir la liste ainsi que la version des scripts qui sont appelés.
|
* Dependance : Permêt de définir la liste ainsi que la version des scripts qui sont appelés.
|
||||||
Dans le cas d'un changement cela permêt de connaître les scripts qui sont impactés.
|
Dans le cas d'un changement cela permêt de connaître les scripts qui sont impactés.
|
||||||
Pour le moment aucun script n'exploite cette méta-donnée qui est presente pour un future usage.
|
Pour le moment aucun script n'exploite cette méta-donnée qui est presente pour un future usage.
|
||||||
|
|
||||||
* Liste des options : La déclaration des options n'est pas obligatoire.
|
* Liste des options : La déclaration des options n'est pas obligatoire.
|
||||||
|
|
||||||
Si aucune déclaration n'est présente alors la bibliothèque params.lib ne fait aucune action.
|
Si aucune déclaration n'est présente alors la bibliothèque params.lib ne fait aucune action.
|
||||||
Dans ce cas les options par défaut -h, -log, -hist, -cpt, -s et -dbg ne seront pas disponible.
|
Dans ce cas les options par défaut -h, -log, -hist, -cpt, -s et -dbg ne seront pas disponible.
|
||||||
|
|
||||||
Si le script ne nécessite pas d'option mais que l'on souhaite disposer des options par défaut, il
|
Si le script ne nécessite pas d'option mais que l'on souhaite disposer des options par défaut, il
|
||||||
faudra déclarer une option bidon.
|
faudra déclarer une option bidon.
|
||||||
|
|
||||||
# @OPT: f:bidon::::::
|
# @OPT: f:bidon::::::
|
||||||
|
|
||||||
Si la déclaration existe alors le socle gèrera les paramètres en entrée du script, ainsi que
|
Si la déclaration existe alors le socle gèrera les paramètres en entrée du script, ainsi que
|
||||||
les options par défaut -h, -log, -hist, -cpt, -s et -dbg. Ces mots clé sont reservés et ne
|
les options par défaut -h, -log, -hist, -cpt, -s et -dbg. Ces mots clé sont reservés et ne
|
||||||
peuvent pas être utilisé par le script.
|
peuvent pas être utilisé par le script.
|
||||||
|
|
||||||
La déclaration est réalisée dans le paragraphe "Liste des options et arguments". Chaque
|
La déclaration est réalisée dans le paragraphe "Liste des options et arguments". Chaque
|
||||||
option est identifiée par l'entête de ligne "# @OPT:" suivi de la description.
|
option est identifiée par l'entête de ligne "# @OPT:" suivi de la description.
|
||||||
|
|
||||||
La description consiste en une liste de paramètres séparés par ":"
|
La description consiste en une liste de paramètres séparés par ":"
|
||||||
|
|
||||||
<type>:<nom>:<var>:<nb\_arg>:<def\_val>:<OptE>:<OptI>:<ctl\_val>
|
<type>:<nom>:<var>:<nb\_arg>:<def\_val>:<OptE>:<OptI>:<ctl\_val>
|
||||||
|
|
||||||
L'ordre des paramètres est figé et tous doivent etre présents.
|
L'ordre des paramètres est figé et tous doivent etre présents.
|
||||||
|
|
||||||
8 champs sont obligatoires, soit 7 caracteres ":" (on ne compte pas le caracatere ":" suivant @OPT).
|
8 champs sont obligatoires, soit 7 caracteres ":" (on ne compte pas le caracatere ":" suivant @OPT).
|
||||||
Exemple de déclaration valide :
|
Exemple de déclaration valide :
|
||||||
|
|
||||||
# @OPT: fb:h::0:::
|
# @OPT: fb:h::0:::
|
||||||
# @OPT: fb:s::0:::
|
# @OPT: fb:s::0:::
|
||||||
@ -263,38 +263,38 @@ Exemple de déclaration valide :
|
|||||||
* <nom> : nom de l'option (sans le tiret). Attention le nom de l'option est sensible à la casse.
|
* <nom> : nom de l'option (sans le tiret). Attention le nom de l'option est sensible à la casse.
|
||||||
|
|
||||||
* <var> : nom de la variable dans laquelle sera stockée le(s) argument(s)
|
* <var> : nom de la variable dans laquelle sera stockée le(s) argument(s)
|
||||||
si plusieurs arguments alors un tableau sera initialisé <var[n]>
|
si plusieurs arguments alors un tableau sera initialisé <var[n]>
|
||||||
L'index [n] commence à zero.
|
L'index [n] commence à zero.
|
||||||
Le nombre d'arguments éffectivement passés a la commande est "${#<var>[*]}".
|
Le nombre d'arguments éffectivement passés a la commande est "${#<var>[*]}".
|
||||||
La valeur max de l'index [n] est "${#<var>[*]} - 1".
|
La valeur max de l'index [n] est "${#<var>[*]} - 1".
|
||||||
|
|
||||||
* <nb\_arg> : nombre d'arguments attendus de la forme "min/max", "min/", "max" ou ""
|
* <nb\_arg> : nombre d'arguments attendus de la forme "min/max", "min/", "max" ou ""
|
||||||
si vide ou "0" alors l'option est booléene.
|
si vide ou "0" alors l'option est booléene.
|
||||||
la forme "min/" considere le nombre max non determiné (infini)
|
la forme "min/" considere le nombre max non determiné (infini)
|
||||||
|
|
||||||
* <def\_val> : Valeur par défaut assignée à <var>
|
* <def\_val> : Valeur par défaut assignée à <var>
|
||||||
Fonctionne si <nb\_arg> vaut 0/1 1/1
|
Fonctionne si <nb\_arg> vaut 0/1 1/1
|
||||||
|
|
||||||
* <OptE> : Liste des options mutellement exclusives séparées par une virgule.
|
* <OptE> : Liste des options mutellement exclusives séparées par une virgule.
|
||||||
|
|
||||||
* <OptI> : Liste des options inclusives séparées par une virgule.
|
* <OptI> : Liste des options inclusives séparées par une virgule.
|
||||||
|
|
||||||
Lors de l'initialisation les marqueurs "@OPT" sont lues et analysées.
|
Lors de l'initialisation les marqueurs "@OPT" sont lues et analysées.
|
||||||
Le résultat est comparé aux arguments et options sousmis au script
|
Le résultat est comparé aux arguments et options sousmis au script
|
||||||
et les variables suivantes son initialisées ...
|
et les variables suivantes son initialisées ...
|
||||||
|
|
||||||
* SH\_OPTION\_<nom> : Initialisée à "1" (Vrai) ou "0" (Faux) selon que l'option est respectivement utilisée ou non.
|
* SH\_OPTION\_<nom> : Initialisée à "1" (Vrai) ou "0" (Faux) selon que l'option est respectivement utilisée ou non.
|
||||||
Il existe toujours une variable par option déclarée. Ceci concerne aussi les options par défaut géré par la bibliothèque params.lib
|
Il existe toujours une variable par option déclarée. Ceci concerne aussi les options par défaut géré par la bibliothèque params.lib
|
||||||
|
|
||||||
* SH\_ARG\_<nom> : Cette variable existe uniquement si le champ <var> est null et si le type n'est pas booléen.
|
* SH\_ARG\_<nom> : Cette variable existe uniquement si le champ <var> est null et si le type n'est pas booléen.
|
||||||
Par défaut elle est initialisée à null ou avec la valeur <def\_val>
|
Par défaut elle est initialisée à null ou avec la valeur <def\_val>
|
||||||
Si le champ <var> est renseigné, alors SH\_ARG\_<nom> est remplacée pas <var>.
|
Si le champ <var> est renseigné, alors SH\_ARG\_<nom> est remplacée pas <var>.
|
||||||
Si l'option associée peut prendre plusieurs arguments, alors les variables SH\_ARG\_<nom> ou <var> sont des tableaux dont l'index commence a zéro.
|
Si l'option associée peut prendre plusieurs arguments, alors les variables SH\_ARG\_<nom> ou <var> sont des tableaux dont l'index commence a zéro.
|
||||||
La taille du tableau peut etre récuperée via ${#SH\_ARG\_<nom>[*]} ou ${#<var>[*]}.
|
La taille du tableau peut etre récuperée via ${#SH\_ARG\_<nom>[*]} ou ${#<var>[*]}.
|
||||||
|
|
||||||
Les options -h, -s, -log [id], -hist [N] et -dbg N sont prises en charge automatiquement. Ces noms sont donc reservées.
|
Les options -h, -s, -log [id], -hist [N] et -dbg N sont prises en charge automatiquement. Ces noms sont donc reservées.
|
||||||
|
|
||||||
Les options par défaut réalisent les actions suivantes :
|
Les options par défaut réalisent les actions suivantes :
|
||||||
|
|
||||||
-h : Affiche l'aide du script (Ligne du cartouche qui commence par "##")
|
-h : Affiche l'aide du script (Ligne du cartouche qui commence par "##")
|
||||||
-s : Mode silence. Plus d'affichage sur le terminal.
|
-s : Mode silence. Plus d'affichage sur le terminal.
|
||||||
@ -306,25 +306,25 @@ Les options par défaut réalisent les actions suivantes :
|
|||||||
dont l'option -debug est utilisée.
|
dont l'option -debug est utilisée.
|
||||||
|
|
||||||
|
|
||||||
* Arguments : La déclaration des argument du script n'est pas obligatoire
|
* Arguments : La déclaration des argument du script n'est pas obligatoire
|
||||||
|
|
||||||
Attention : Si aucune option "@OPT:" n'est déclarée alors il n y aura pas de prise en charge des arguments.
|
Attention : Si aucune option "@OPT:" n'est déclarée alors il n y aura pas de prise en charge des arguments.
|
||||||
Si votre script ne nécessite pas d'option, mais qu'il presente des arguments, il faudra alors déclarer une
|
Si votre script ne nécessite pas d'option, mais qu'il presente des arguments, il faudra alors déclarer une
|
||||||
option bidon :
|
option bidon :
|
||||||
|
|
||||||
# @OPT: f:bidon::::::
|
# @OPT: f:bidon::::::
|
||||||
|
|
||||||
La déclaration est réalisé dans le paragraphe "Liste des options et arguments".
|
La déclaration est réalisé dans le paragraphe "Liste des options et arguments".
|
||||||
Elle est identifiée par l'entête de ligne "# @ARG:" suivi de la description.
|
Elle est identifiée par l'entête de ligne "# @ARG:" suivi de la description.
|
||||||
|
|
||||||
Il ne peut y avoir qu'une ligne de description pour les arguments. (Si plusieurs lignes avec le
|
Il ne peut y avoir qu'une ligne de description pour les arguments. (Si plusieurs lignes avec le
|
||||||
marqueur @ARG existent, alors seule la premiere est prise en compte).
|
marqueur @ARG existent, alors seule la premiere est prise en compte).
|
||||||
|
|
||||||
La description consiste en une liste de paramètres séparés par ":"
|
La description consiste en une liste de paramètres séparés par ":"
|
||||||
|
|
||||||
<type>:<var>:<nb\_arg>:<def\_val>:<ctl\_val>
|
<type>:<var>:<nb\_arg>:<def\_val>:<ctl\_val>
|
||||||
|
|
||||||
L'ordre des paramètres est figé et tous doivent être présents.
|
L'ordre des paramètres est figé et tous doivent être présents.
|
||||||
|
|
||||||
* <type> : Propriéte de l'attribu défini par l'aggrégation des lettres suivantes:
|
* <type> : Propriéte de l'attribu défini par l'aggrégation des lettres suivantes:
|
||||||
|
|
||||||
@ -333,70 +333,70 @@ L'ordre des paramètres est figé et tous doivent être présents.
|
|||||||
M -> Argument transforme en majuscule
|
M -> Argument transforme en majuscule
|
||||||
|
|
||||||
* <var> : nom de la variable dans laquelle sera stockée le(s) argument(s)
|
* <var> : nom de la variable dans laquelle sera stockée le(s) argument(s)
|
||||||
si plusieurs arguments alors un tableau sera initialisé <var[n]>
|
si plusieurs arguments alors un tableau sera initialisé <var[n]>
|
||||||
L'index [n] commence a zero.
|
L'index [n] commence a zero.
|
||||||
Le nombre d'arguments effectivement passés à la commande est "${#<var>[*]}".
|
Le nombre d'arguments effectivement passés à la commande est "${#<var>[*]}".
|
||||||
La valeur max de l'index [n] est "${#<var>[*]} - 1".
|
La valeur max de l'index [n] est "${#<var>[*]} - 1".
|
||||||
|
|
||||||
Si <var> n'est pas renseigné alors la variable SH\_ARGS[] est initialisée
|
Si <var> n'est pas renseigné alors la variable SH\_ARGS[] est initialisée
|
||||||
|
|
||||||
* <nb\_arg> : nombre d'arguments attendus de la forme "min/max", "min/", "max" ou "".
|
* <nb\_arg> : nombre d'arguments attendus de la forme "min/max", "min/", "max" ou "".
|
||||||
si vide alors on considère que le nombre d'arguments est a minima de 1.
|
si vide alors on considère que le nombre d'arguments est a minima de 1.
|
||||||
la forme "min/" considère le nombre est a minima de "min".
|
la forme "min/" considère le nombre est a minima de "min".
|
||||||
|
|
||||||
* <def\_val> : Valeur par défaut assignée a <var>
|
* <def\_val> : Valeur par défaut assignée a <var>
|
||||||
Fonctionne si <nb\_arg> vaut 0/1 1/1
|
Fonctionne si <nb\_arg> vaut 0/1 1/1
|
||||||
|
|
||||||
ATTENTION:
|
ATTENTION:
|
||||||
Si le caractère "&" est présent dans la valeur d'un argument, alors cette valeur doit être encadrée
|
Si le caractère "&" est présent dans la valeur d'un argument, alors cette valeur doit être encadrée
|
||||||
par une simple quote et le caractère "&" doit être protégé par un anti-slash "\".
|
par une simple quote et le caractère "&" doit être protégé par un anti-slash "\".
|
||||||
|
|
||||||
Dans le cas contraire le shell génèrera un fils qui tentera l'execution d'un script portant le nom de la valeur
|
Dans le cas contraire le shell génèrera un fils qui tentera l'execution d'un script portant le nom de la valeur
|
||||||
de l'argument.
|
de l'argument.
|
||||||
|
|
||||||
#### 1.2 Versionnement sémantique
|
#### 1.2 Versionnement sémantique
|
||||||
|
|
||||||
##### 1.2.1 Usage
|
##### 1.2.1 Usage
|
||||||
|
|
||||||
L'idée de l'utilisation du versionnement sémantique est de définir clairement les intentions
|
L'idée de l'utilisation du versionnement sémantique est de définir clairement les intentions
|
||||||
d'un changement dans un code pour les clients de ce dernier. Ceci permet de fiabiliser la mise en
|
d'un changement dans un code pour les clients de ce dernier. Ceci permet de fiabiliser la mise en
|
||||||
place de dépendances et de déterminer les impacts d'un changement.
|
place de dépendances et de déterminer les impacts d'un changement.
|
||||||
|
|
||||||
##### 1.2.2 Format
|
##### 1.2.2 Format
|
||||||
|
|
||||||
Le format utilisé est le suivant: X.Y.Z
|
Le format utilisé est le suivant: X.Y.Z
|
||||||
|
|
||||||
* X est l'identifiant de version majeure.
|
* X est l'identifiant de version majeure.
|
||||||
* Y est l'identifiant de version mineure.
|
* Y est l'identifiant de version mineure.
|
||||||
* Z est l'identifiant de version de correction.
|
* Z est l'identifiant de version de correction.
|
||||||
|
|
||||||
##### 1.2.3 Sémantique
|
##### 1.2.3 Sémantique
|
||||||
|
|
||||||
* Version majeure X : Il vaut "0" lors du développement, le script est considéré non valide et ne
|
* Version majeure X : Il vaut "0" lors du développement, le script est considéré non valide et ne
|
||||||
devrait pas être appelé par d'autres scripts. Une fois le script valide la version doit etre 1.0.0
|
devrait pas être appelé par d'autres scripts. Une fois le script valide la version doit etre 1.0.0
|
||||||
(première version stable).
|
(première version stable).
|
||||||
|
|
||||||
Il doit etre incrementé si des changements dans le code n'assure plus la compatibilité ascendante.
|
Il doit etre incrementé si des changements dans le code n'assure plus la compatibilité ascendante.
|
||||||
Les identifiants de version mineure et de correction doivent etre remis à zero quand l'identifiant
|
Les identifiants de version mineure et de correction doivent etre remis à zero quand l'identifiant
|
||||||
de version majeure est incrementé.
|
de version majeure est incrementé.
|
||||||
|
|
||||||
* Version mineur Y : Doit être incrementé lors de l'ajout de nouvelles fonctionnalités ou d'amélioration
|
* Version mineur Y : Doit être incrementé lors de l'ajout de nouvelles fonctionnalités ou d'amélioration
|
||||||
du code qui n'ont pas d'impact sur la compatibilité ascendante. L'identifiant de version de correction doit
|
du code qui n'ont pas d'impact sur la compatibilité ascendante. L'identifiant de version de correction doit
|
||||||
être remis a zero lorsque l'identifiant de version mineure est incrementé.
|
être remis a zero lorsque l'identifiant de version mineure est incrementé.
|
||||||
|
|
||||||
* Version de correction Z : Doit être incrementé si seules des corrections rétro-compatibles sont introduites.
|
* Version de correction Z : Doit être incrementé si seules des corrections rétro-compatibles sont introduites.
|
||||||
Une correction est définie comme un changement interne qui corrige un comportement incorrect.
|
Une correction est définie comme un changement interne qui corrige un comportement incorrect.
|
||||||
Il peut être incrementé lors de correction typographique ou grammaticale.
|
Il peut être incrementé lors de correction typographique ou grammaticale.
|
||||||
|
|
||||||
|
|
||||||
### 2 - Initialisation du socle
|
### 2 - Initialisation du socle
|
||||||
|
|
||||||
Par défaut les bibliothèques du socle sont chargées à la connexion. Mais pour qu'elles puissent être operationnelles
|
Par défaut les bibliothèques du socle sont chargées à la connexion. Mais pour qu'elles puissent être operationnelles
|
||||||
il faut initialiser les variables de session.
|
il faut initialiser les variables de session.
|
||||||
|
|
||||||
Ceci est réalisé en sourcant le fichier "${NC\_EXPL\_CFG}/init.conf" au debut du script :
|
Ceci est réalisé en sourcant le fichier "${NC\_EXPL\_CFG}/init.conf" au debut du script :
|
||||||
|
|
||||||
Remarque: L'analyse des options et arguments est aussi réalisée par "${NC\_EXPL\_CFG}/init.conf".
|
Remarque: L'analyse des options et arguments est aussi réalisée par "${NC\_EXPL\_CFG}/init.conf".
|
||||||
|
|
||||||
+----------------------------------------------------------------------------------------------------+
|
+----------------------------------------------------------------------------------------------------+
|
||||||
| |
|
| |
|
||||||
@ -421,10 +421,10 @@ Remarque: L'analyse des options et arguments est aussi réalisée par "${NC\_EXP
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 3 - Structure d'un script
|
### 3 - Structure d'un script
|
||||||
|
|
||||||
Voici les éléments qui devraient être présents a minima dans les script Bash. Ceci est recommandé pour
|
Voici les éléments qui devraient être présents a minima dans les script Bash. Ceci est recommandé pour
|
||||||
assurer une homogénéite dans l'ensemble du socle.
|
assurer une homogénéite dans l'ensemble du socle.
|
||||||
|
|
||||||
+----------------------------------------------------------------------------------------------------+
|
+----------------------------------------------------------------------------------------------------+
|
||||||
| |
|
| |
|
||||||
@ -445,6 +445,7 @@ assurer une homogénéite dans l'ensemble du socle.
|
|||||||
| else |
|
| else |
|
||||||
| . ${NC_EXPL_CFG}/init.conf |
|
| . ${NC_EXPL_CFG}/init.conf |
|
||||||
| fi |
|
| fi |
|
||||||
|
| |
|
||||||
| #----------------------------------------------------------------------------- |
|
| #----------------------------------------------------------------------------- |
|
||||||
| # Definition des fonctions |
|
| # Definition des fonctions |
|
||||||
| #----------------------------------------------------------------------------- |
|
| #----------------------------------------------------------------------------- |
|
||||||
@ -483,42 +484,42 @@ assurer une homogénéite dans l'ensemble du socle.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Note : La construction /G\_VAR1=${G\_AVR1:="Valeur par défaut"}/ permet de définir une variable avec une
|
Note : La construction G\_VAR1=${G\_AVR1:="Valeur par défaut"} permet de définir une variable avec une
|
||||||
valeur par défaut, qui peut être surchargée dans le fichier de configuration {NC\_EXPL\_CFG}/<Nom\_du\_script>.conf
|
valeur par défaut, qui peut être surchargée dans le fichier de configuration {NC\_EXPL\_CFG}/<Nom\_du\_script>.conf
|
||||||
|
|
||||||
Concernant les fonctions /fct\_message/ et /fct\_erreur/ voir le chapitre V.
|
Concernant les fonctions /fct\_message/ et /fct\_erreur/ voir le chapitre V.
|
||||||
|
|
||||||
|
|
||||||
### 4 - Actions réalisées au lancement d un script
|
### 4 - Actions réalisées au lancement d un script
|
||||||
|
|
||||||
Le script commence par le chargement de la configuration ". ${NC\_EXPL\_CFG}/init.conf"
|
Le script commence par le chargement de la configuration ". ${NC\_EXPL\_CFG}/init.conf"
|
||||||
un certain nombre d'actions sont effectuées par défaut en plus de l'initialisation des variables de session.
|
un certain nombre d'actions sont effectuées par défaut en plus de l'initialisation des variables de session.
|
||||||
|
|
||||||
* Initialisation des variables de session (Cf. II.3)
|
* Initialisation des variables de session (Cf. II.3)
|
||||||
* Génération d'un numéro de session unique sous la varable ${SH\_SESSION\_ID}
|
* Génération d'un numéro de session unique sous la varable ${SH\_SESSION\_ID}
|
||||||
* Chargement du fichier ${SH\_FICCFG}
|
* Chargement du fichier ${SH\_FICCFG}
|
||||||
* Rotation des fichiers ${SH\_FICLOG} et ${SH\_FICCPT} selon les rétentions respective ${SH\_RETENTION\_LOG} et ${SH\_RETENTION\_CPT}
|
* Rotation des fichiers ${SH\_FICLOG} et ${SH\_FICCPT} selon les rétentions respective ${SH\_RETENTION\_LOG} et ${SH\_RETENTION\_CPT}
|
||||||
* Purge des fichiers temporaires (${NC\_EXP\_ROOT}/tmp) antérieurs selon la retentions ${SH\_RETENTION\_LOG} et
|
* Purge des fichiers temporaires (${NC\_EXP\_ROOT}/tmp) antérieurs selon la retentions ${SH\_RETENTION\_LOG} et
|
||||||
suppression des fichiers générés par le script utilsant le socle dans ${NC\_EXP\_ROOT}/log et ${NC\_EXP\_ROOT}/cpt
|
suppression des fichiers générés par le script utilsant le socle dans ${NC\_EXP\_ROOT}/log et ${NC\_EXP\_ROOT}/cpt
|
||||||
* Ecriture dans le fichier ${SH\_FICTRC} de la date de début exécution ainsi que les arguments passés au script
|
* Ecriture dans le fichier ${SH\_FICTRC} de la date de début exécution ainsi que les arguments passés au script
|
||||||
* Initialisation du fichier ${SH\_FICLOG} à vide
|
* Initialisation du fichier ${SH\_FICLOG} à vide
|
||||||
* Analyse des paramètres passés au script
|
* Analyse des paramètres passés au script
|
||||||
|
|
||||||
Cette analyse ne fonctionne que si les options ont été déclarées dans l'entête du script (Cf. III.1.1.2)
|
Cette analyse ne fonctionne que si les options ont été déclarées dans l'entête du script (Cf. III.1.1.2)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## IV - Nomenclature
|
## IV - Nomenclature
|
||||||
|
|
||||||
### 1 - Fichiers temporaires
|
### 1 - Fichiers temporaires
|
||||||
|
|
||||||
Les fichiers temporaires doivent etre écrits dans le répertoire ${NC\_EXPL\_TMP}.
|
Les fichiers temporaires doivent etre écrits dans le répertoire ${NC\_EXPL\_TMP}.
|
||||||
Les noms des fichiers temporaires sont de la forme : <Libre>\_${SH\_SESSION\_ID}.tmp
|
Les noms des fichiers temporaires sont de la forme : <Libre>\_${SH\_SESSION\_ID}.tmp
|
||||||
De cette facon il seront gérés par le socle (Suppresion automatique).
|
De cette facon il seront gérés par le socle (Suppresion automatique).
|
||||||
|
|
||||||
### 2 - Nom des exécutables (fichiers du dossier ${EXPL\_ROOT}/bin )
|
### 2 - Nom des exécutables (fichiers du dossier ${EXPL\_ROOT}/bin )
|
||||||
|
|
||||||
Les noms des fichiers doivent être de la forme :
|
Les noms des fichiers doivent être de la forme :
|
||||||
|
|
||||||
<pre>_<descr>
|
<pre>_<descr>
|
||||||
<pre>_<descr>.<language>
|
<pre>_<descr>.<language>
|
||||||
@ -526,31 +527,31 @@ Les noms des fichiers doivent être de la forme :
|
|||||||
<app>_<descr>.<language>
|
<app>_<descr>.<language>
|
||||||
|
|
||||||
|
|
||||||
* <pre> : est une des valeurs suivantes : "sys", "dba", "exp", "ctl", "aud", "int"
|
* <pre> : est une des valeurs suivantes : "sys", "dba", "exp", "ctl", "aud", "int"
|
||||||
* "sys" : Scrits d'administration système.
|
* "sys" : Scrits d'administration système.
|
||||||
* "dba" : Scripts d'administration base de données
|
* "dba" : Scripts d'administration base de données
|
||||||
Ces scripts peuvent présenter des risques et doivent faire l'objet d'une attention particulière
|
Ces scripts peuvent présenter des risques et doivent faire l'objet d'une attention particulière
|
||||||
lors de leurs exécution.
|
lors de leurs exécution.
|
||||||
* "exp" : Scripts d'exploitation dévolus principalement aux traitements réccurents
|
* "exp" : Scripts d'exploitation dévolus principalement aux traitements réccurents
|
||||||
Ces scripts sont réservés à l'exploitation courante. Il peuvent modifier le système dans le cadres de
|
Ces scripts sont réservés à l'exploitation courante. Il peuvent modifier le système dans le cadres de
|
||||||
traitements réccurents.
|
traitements réccurents.
|
||||||
Leurs exécution est de risque modére, comme respecter une date d'execution.
|
Leurs exécution est de risque modére, comme respecter une date d'execution.
|
||||||
Il sont reservés à l'exploitation système uniquement.
|
Il sont reservés à l'exploitation système uniquement.
|
||||||
Dans le cas d'un traitement réccurrent pour le compte d'une application le nom doit
|
Dans le cas d'un traitement réccurrent pour le compte d'une application le nom doit
|
||||||
être de la forme <app>\_<descr>.<language>
|
être de la forme <app>\_<descr>.<language>
|
||||||
* "int" : Scripts dédiés aux interfaces entre applications
|
* "int" : Scripts dédiés aux interfaces entre applications
|
||||||
Ces scripts doivent faire l'objet d'une attention particulière car il peuvent modifier
|
Ces scripts doivent faire l'objet d'une attention particulière car il peuvent modifier
|
||||||
les données applicatives et peuvent être contraints par des conditions d'execution.
|
les données applicatives et peuvent être contraints par des conditions d'execution.
|
||||||
* "ctl" : Script de contrôle (dévolu principalement au système de monitoring)
|
* "ctl" : Script de contrôle (dévolu principalement au système de monitoring)
|
||||||
* "aud" : Script d'audit ne modifiant pas le système.
|
* "aud" : Script d'audit ne modifiant pas le système.
|
||||||
Ces scripts peuvent être executés sans aucun risque.
|
Ces scripts peuvent être executés sans aucun risque.
|
||||||
|
|
||||||
* <descr> est libre, doit refléter si possible la fonction du script.
|
* <descr> est libre, doit refléter si possible la fonction du script.
|
||||||
|
|
||||||
* <language> est une des valeurs suivantes :
|
* <language> est une des valeurs suivantes :
|
||||||
|
|
||||||
"sh" : Script Bash.
|
"sh" : Script Bash.
|
||||||
|
|
||||||
* <app> est le nom de l'application à laquelle le script est dédié.
|
* <app> est le nom de l'application à laquelle le script est dédié.
|
||||||
Ces scripts sont réservés à une application particulière dans le cadres de l'exploitation
|
Ces scripts sont réservés à une application particulière dans le cadres de l'exploitation
|
||||||
réccurente de l'application.
|
réccurente de l'application.
|
||||||
|
Loading…
Reference in New Issue
Block a user