logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision Les deux révisions suivantes
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [28/05/2014 07:25]
Hypathie [Création de variables par l'utilisateur]
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [28/05/2014 11:03]
Hypathie [Créer des paramètres de position : la commande set + argument(s)]
Ligne 398: Ligne 398:
 À savoir : variables de substitution prédéfinies [[atelier:​chantier:​bash-les-differents-caracteres-speciaux?&#​variables-de-substitution-predefinies-principalement-dans-les-scripts]] À savoir : variables de substitution prédéfinies [[atelier:​chantier:​bash-les-differents-caracteres-speciaux?&#​variables-de-substitution-predefinies-principalement-dans-les-scripts]]
  
-  *La commande **set** permet d'​affecter une valeur à un ou plusieurs paramètres.+  *La commande **set** permet d'​affecter une valeur ​provisoire ​à un ou plusieurs paramètres ​de position.
 Les arguments de la commande set seront les valeurs des paramètres que set positionne.\\ ​ Les arguments de la commande set seront les valeurs des paramètres que set positionne.\\ ​
  
Ligne 408: Ligne 408:
 #!/bin/bash #!/bin/bash
 var=lettres var=lettres
-set a b c                     ​#​affectation des paramètres a b c +set a b c               ​#​affectation des paramètres a b c 
-echo $var $1 $2 $3 +echo "$var" "$1" "$2" "$3" 
-if [ $# != 2 ] ; then         ​# (1)+if [ $# != 2 ] ; then   ​# (1)
 echo "il y a trois paramètres et une variable nommée var de valeur \"​lettres\"​ " echo "il y a trois paramètres et une variable nommée var de valeur \"​lettres\"​ "
 fi fi
Ligne 420: Ligne 420:
 il y a trois paramètres et une variable nommée var de valeur "​lettres"​ il y a trois paramètres et une variable nommée var de valeur "​lettres"​
 </​code>​ </​code>​
-//(1) Cette ligne signifie : si (if) le nombre de paramètres ($#) est différent de 2 (!= 2) alors (then).//​\\ ​ 
 Voir : [[doc:​programmation:​shell:​avancee#​instruction-conditionnelle-if]] Voir : [[doc:​programmation:​shell:​avancee#​instruction-conditionnelle-if]]
  
 **Remarquez : Dans cet exemple, les valeurs des paramètres enregistrés grâce à la commande set sont stockés en mémoire de façon identique que l'​enregistrement de la valeur "​lettres"​ de la variable "​var"​ au moyen du signe =.\\ Autrement dit, la commande interne set est un mécanisme d'​enregistrement d'une valeur qui n'a pas besoin d'​être nommée pour être pointée.\\ ​ **Remarquez : Dans cet exemple, les valeurs des paramètres enregistrés grâce à la commande set sont stockés en mémoire de façon identique que l'​enregistrement de la valeur "​lettres"​ de la variable "​var"​ au moyen du signe =.\\ Autrement dit, la commande interne set est un mécanisme d'​enregistrement d'une valeur qui n'a pas besoin d'​être nommée pour être pointée.\\ ​
-Et dans ce cas, un paramètre c'est une valeur ou encore une "​variable"​ un peu particulière,​ voyons ce qui fait qu'un paramètre ce n'est pas une variable** +Et dans ce cas, un paramètre c'est une valeur ou encore une "​variable"​ un peu particulière,​ voyons ce qui fait que la valeur d'un paramètre ce n'est pas exactement la valeur d'une variable** 
-   ​* **Remarquez d'​abord cela :**+ 
 +====comparons "​mon-script1"​ avec "​mon-script2"​ :==== 
 + 
 +**1) Les paramètres dont les valeurs sont déclarés avec set ne sont pas enregistrés comme les variables déclarées ​:**
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
-set a b c            # ici les valeurs exactes des paramètres sont mémorisées dans le script +set a b c  
-echo $1 $2 $3 +echo $@ 
-if [ $# != $1:$2:$3 ] ; then +echo "il y a les paramètres de position : $1$2$3" 
-echo "Les valeurs ​des paramètres 1, 2, et 3, sont a b c." +echo "Leurs valeurs sont vide: RIEN"$a", RIEN"$b", RIEN"$c"."
-fi+
 </​code>​ </​code>​
 Retour : Retour :
 <code bash> <code bash>
 a b c a b c
-Les valeurs des paramètres ​1, 2, et 3, sont a b c.+il y a les paramètres ​de position : abc 
 +Leurs valeurs sont vide: RIEN, RIEN, RIEN.
 </​code>​ </​code>​
  
 **=> La valeur d'un paramètre a une position précise !** **=> La valeur d'un paramètre a une position précise !**
  
-  ​* **remarquez maintenant ceci :**\\  +**=>un paramètre n'est pas une variable ; tous les paramètres de position sont ré-initialisés dès que set pose un nouvel argument tandis qu'il ne réinitialise pas une variable déjà créée.** 
-Lancez : "​mon-script"​ avec le contenu ci-dessous, comme vous l'avez fait jusqu'​ici : +  * ** De même, set-- annule tous les paramètres initialisés (et non pas la ou les variable(s)) par affectation directe ou par une structure conditionnelle).**
-<code bash> +
-#​!/​bin/​bash +
-if [ $# !2 ]          # ici le mécanisme if ... then enregistre 2 chaînes peu importe lesquelles; le script enregistre en mémoire un test conditionnel par lequel sont enregistées les valeurs de deux paramètres qui peuvent être une chaîne de caractères indéterminée.  +
-then +
-echo " Il faut deux paramètres,​ svp !" +
-else  +
-echo "vous avez rentré 2 paramètres : bravo !" +
-fi +
-</code> +
- +
-Puis exécutez à nouveau ce script en ajoutant, avant d'​appuyer sur la touche entrée, un espace puis deux groupes de caractères (lettre(s) ou chiffre(s)) séparés par un espace.\\  +
-Par exemple : +
-<​code>​ +
-mon.script bfr  u2f +
-</​code>​ +
- +
-**retour premier cas :** +
-<​code>​ +
-Il faut deux paramètres,​ svp ! +
-</​code>​ +
-**retour deuxième cas :** +
-<​code>​ +
-vous avez rentré 2 paramètres : bravo ! +
-</​code>​ +
- +
-**=> Contrairement à la valeur d'une variable, la valeur d'un paramètre (créé au moyen d'une conditionnelle) est pointée par cette conditionnelle sans que celle-ci soit forcément nommée.** +
- +
-  * **un paramètre n'est pas une variable ; tous les paramètres de position sont ré-initialisés dès que set pose un nouvel argument tandis qu'il ne réinitialise pas une variable déjà créée.** +
-  * ** De même, set-- annule tous les paramètres initialisés (pas la ou les variable(s)).**+
  
 <code bash> <code bash>
Ligne 528: Ligne 501:
 </​note>​ </​note>​
  
-===Les tableaux===+**2) Lancez "​mon-script2"​ (ci-dessous) successivement avec les arguments a ; puis b ; puis a b ; puis sans argument :** 
 + 
 +<​code>​ 
 +#​!/​bin/​bash 
 +var1=$1 
 +var2=$2 
 +echo $1 
 +echo $2 
 +if [ $# == 1 ] ; then 
 + echo "​ERREUR:​ vous avez entré $@, mais il faut deux arguments !" 
 +  elif [ $# == 2 ] ; then 
 +   echo "Les deux arguments que vous avez entré sont $1 et $2" 
 +  elif [ $# == 0 ] ; then 
 +    echo "​ERREUR:​ vous n'avez pas entré d'​arguments,​ il en faut deux !" 
 +fi 
 +</​code>​ 
 + 
 +<code user> 
 +mon-script2 a 
 +</​code>​ 
 + 
 +<code user> 
 +mon-script2 b 
 +</​code>​ 
 + 
 +<code user> 
 +mon-script2 a b 
 +</​code>​ 
 + 
 +<code user> 
 +mon-script2 
 +</​code>​ 
 + 
 +====Déclaration de la valeur d'une variable par une structure conditionnelle ==== 
 +**Contrairement à la valeur d'une variable, la valeur d'un paramètre (créé au moyen d'une conditionnelle) est pointée par cette conditionnelle sans que celle-ci soit forcément nommée.** 
 + 
 +=====Créer des paramètres de position : les tableaux=====
 Les variables de chaque case d'un tableau, ont elles aussi une position définie par l'​utilisateur,​ ou automatiquement lors de la création du tableau.\\ ​ Les variables de chaque case d'un tableau, ont elles aussi une position définie par l'​utilisateur,​ ou automatiquement lors de la création du tableau.\\ ​
 Pour plus de précision sur la création et l'​utilisation de tableau dans les scripts voir ici : [[atelier:​chantier:​page-man-bash-v-les-tableaux]] Pour plus de précision sur la création et l'​utilisation de tableau dans les scripts voir ici : [[atelier:​chantier:​page-man-bash-v-les-tableaux]]
doc/programmation/shells/debuter-avec-les-scripts-shell-bash.txt · Dernière modification: 20/08/2022 08:35 par paskal

Pied de page des forums

Propulsé par FluxBB