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
Révision précédente
Prochaine révision Les deux révisions suivantes
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [30/05/2014 07:04]
Hypathie [variable et calcul sur les entiers]
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [30/05/2014 08:22]
Hypathie [Déclaration de la valeur d'une variable avec une structure conditionnelle]
Ligne 427: Ligne 427:
   read -p "​entrez votre de naissance (deux derniers chiffres): " -n 2 annee   read -p "​entrez votre de naissance (deux derniers chiffres): " -n 2 annee
 </​note>​ </​note>​
-=====Créer des paramètres de position : la commande set ===== 
  
-À savoir : variables de substitution prédéfinies ​[[atelier:​chantier:​bash-les-differents-caracteres-speciaux?&#​variables-de-substitution-predefinies-principalement-dans-les-scripts]]+=====Variable et structure conditionnelle===== 
 +===Prérequis=== 
 +À savoir : 
 +  * [[atelier:​chantier:​la-page-man-bash-ii-les-operateurs-lexicographiques|Opérateurs lexicographiques]] 
 +  * [[atelier:​chantier:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|les opérateurs de comparaison numérique]]
  
-  *La commande **set** permet ​d'affecter une valeur provisoire à un ou plusieurs paramètres de position+<​note>​ 
-Les arguments de la commande ​set seront les valeurs ​des paramètres que set positionne.\\ +Rappel:\\ 
 +Les opérateurs de comparaison (crochets) relève ​d'​un ​mécanisme interne au shell.\\ 
 +La commande ​test permet elle aussi de faire des tests.\\  
 +Elle s'​utilise avec les mêmes expressions de comparaison mais avec cette syntaxe :\\ 
  
 <​code>​ <​code>​
-set argument1 ​[argument2... +test expression ​         ou bien     expression ​]
-</​code>​+
  
-<code bash> +$ test -f /etc/gaga                  $ [ -f /etc/gaga ] 
-#!/bin/bash +echo $?                            ​echo $? 
-var=lettres +                                   1 
-set a b c               #​affectation des paramètres a b c +$                                    $
-echo "$var" "$1" "​$2"​ "$3" +
-if [ $# != 2 ] ; then   # (1) +
-echo "il y a trois paramètres et une variable nommée var de valeur \"​lettres\"​ " +
-fi+
 </​code>​ </​code>​
-Retour ​:+Dans les deux cas, le fichier /etc/gaga n'​existe pas.\\ 
 +(Si le fichier /etc/gaga existait, le retour serait 0.) 
 +</​note>​ 
 +  * Pour aller plus loin les opérateurs logiques. 
 +Ils s'​utilisent avec les tests.\\ 
 +^ Opérateur ^ Signification ^ 
 +|!         | Négation ​     | 
 +|-a         | ET            | 
 +|-o         | OU            |
  
-<​code>​ +Et dans un ordre précis :\\ 
-lettres a b c +  - ! (négation) 
-il y trois paramètres et une variable nommée var de valeur "​lettres"​ +  - -(ET) 
-</​code>​ +  - -o (OU)
-Voir : [[doc:​programmation:​shell:​avancee#​instruction-conditionnelle-if]]+
  
-**Remarquez : Dans cet exempleles 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'pas besoin d'​être nommée ​pour être pointée.\\  +<note important>​ 
-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** +Il doit toujours y avoir un espace autour des opérateurs !-a et -o.\\  
- +Ne pas prendre -(opérateur logique) ​pour un opérateur de test sur les fichiers.\\ 
-**Observez:​** +Ni confondre -o (opérateur logique) avec -ot (test pour savoir si un fichier1 ​est plus ancien qu'​un ​fichier2.\\ 
-  * mon-script1 +Il est possible de modifier ​la priorité ​d'exécution des opérateurs en utilisant des paranthèses. 
-<code bash> +\(........\) 
-#​!/​bin/​bash +Les parenthèses doivent être protégées par des antislashes afin de ne pas être interprétées par le shell comme étant un regroupement de commandes.  
-set a b c  +</note
-echo $@ +  * syntaxe ​
-echo "il y a les paramètres de position : $1, $2, $3" +Le fichier ​"toto" ​n'est pas un répertoire ​:
-echo "Leurs valeurs sont vide: RIEN"​$a",​ RIEN"​$b",​ RIEN"​$c"​." +
-</​code>​ +
-Retour : +
-<code bash> +
-a b c +
-il y a les paramètres ​de position : a, b, c +
-Leurs valeurs sont vide: RIEN, RIEN, RIEN+
-</code> +
- +
-**=> La valeur d'un paramètre de position n'est pas pointé !** +
- +
-  * mon-script2 ​+
-<code bash> +
-#​!/​bin/​bash +
-#​!/​bin/​bash +
-var=lettres +
-set a b c +
-echo $var +
-echo $@ +
-echo " " ​ +
-set gros_pater +
-echo $var +
-echo $1 +
-set -- +
-echo $var  +
-echo $1 +
-</​code>​ +
-**Retour ​:**+
 <​code>​ <​code>​
-lettres +[ ! -d /etc/group ] 
-a b c + echo $? 
-  +0
-lettres +
-gros_pater +
-lettres +
- +
- +
-</​code>​ +
-  * **=> dans un script, contrairement à la valeur d'une variable, la valeur d'un paramètre de position créé avec set est ré-initialisé dès que set pose un nouvel paramètre de position, tandis qu'il est possible de déclarer une nouvelle variable au sein d'un même script.** +
-  * ** De même, set-- annule tous les paramètres position initialisés précédemment dans le script.** +
-<note > +
-  *Sans argument la commande set affiche TOUS les noms et TOUTES les valeurs des variables pré-définies (celles du script qui l'​appelle aussi). Mais elle n'​enregistre pas une valeur d'un valeur non-déclarée ! FIXME\\ +
-<code bash> +
-#​!/​bin/​bash +
-var=lettres +
-set a b c +
-set +
-</​code>​ +
-Observons les deux dernières lignes du retour : +
-<​code>​ +
-XDG_SESSION_PATH=/​org/​freedesktop/DisplayManager/Session0 +
-_=c +
-var=lettres+
 </​code>​ </​code>​
-La première ligne montre en majuscule le nom d'une variable pré-défini,​ et ce qui suit est la valeur de cette variable. 
-Nous retrouvons la variable var de notre script avec sa valeur "​lettres"​. 
-Mais on ne voit pas les paramètres a b c. 
-  *set -o nom-de-l'​option ou set -abréviation-de-l'​option: ​ permet d'​activer les options du shell dans un script.\\ 
-Par exemple, on peut vérifier grâce à un message d'​erreur si on appelle la valeur d'un paramètre qui n'a pas été défini. 
-<code bash> 
-#!/bin/bash 
-set -o nounset 
-var=a 
-var1= 
  
-echo $var  +Le fichier mon-script existe et est exécutable ​:
-echo $var1 +
-echo $var3 +
-</​code>​ +
-retour :+
 <​code>​ <​code>​
-+[ -f mon-script --x mon-script ] 
- +echo $? 
-/​home/​hypathie/​MesScripts/​scriess:​ ligne8: var3 : variable sans liaison+0
 </​code>​ </​code>​
-Voir le tableau des options ici: http://​abs.traduc.org/​abs-5.3-fr/​ch30.html#​optionsref 
-</​note>​ 
- 
-=====Déclaration de la valeur d'une variable avec une structure conditionnelle===== 
- 
 **La valeur du paramètre d'une conditionnelle est pointée par cette conditionnelle sans forcément être nommé.** **La valeur du paramètre d'une conditionnelle est pointée par cette conditionnelle sans forcément être nommé.**
 (Lancez "​mon-script"​ successivement sans argument, puis un, deux trois, etc. arguments.) (Lancez "​mon-script"​ successivement sans argument, puis un, deux trois, etc. arguments.)
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