Aller au menu - Aller au contenu

Les conditions

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1 
Pseudo Commentaire
Page 1 
Hors ligne gouttegd # Posté le 28/05/2009 à 13:14:25
Serenity is a RAID 1 array.
Avatar

Hum, l’explication de case ... esac est largement incomplète, voire même fausse.

Il faut surtout comprendre que la construction
Code : Bash
1
2
case $var in
    value)

ne teste pas si $var est égale à value, mais si elle correspond au pattern value.

Cela offre des possibilités autrement plus intéressantes que si on ne pouvait que tester l’égalité des chaînes, par exemple pour tester l’extension d’un fichier :
Code : Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
case $file in
    *.html)
         echo "C'est de l'HTML"
         ;;
    *.txt)
         echo "C'est un fichier texte."
         ;;
    *)
         echo "C'est autre chose."
         ;;
esac

« Je vous aiderai si vous me promettez d'aider quelqu'un d'autre en retour. » --- Anonyme
« Soyez vigilant lorsque vous vous exprimez dans un forum électronique. Vos fautes de frappes et de syntaxe vous poursuivront pour l'éternité. » --- Linus B. Torvalds

De la gestion automatique des dépendances...
 
Hors ligne M@teo21 # Posté le 28/05/2009 à 13:17:23
Amateur professionnel
Avatar
Admins
Flux RSS

Ville : Paris
Pays : France métropolitaine
Études : EFREI

Exact, je vais modifier merci.

Auteur de 5 livres : HTML5 - C - PHP - Linux - C++
L'urgent est fait, l'impossible est en cours, pour les miracles, prévoir un délai...
 
Hors ligne Gravstein # Posté le 28/05/2009 à 16:46:10
Bonjour!
Avatar

Études : EPFL

ça pourrait aussi être utile de préciser que la condition [ ... ] est une autre syntaxe pour appeler la commande "test". Le branchement if teste la valeur de retour d'une commande. Dans le cas général, on peut remplacer les crochets par n'importe quelle commande:

Code : Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
if true; then
  #sera toujours affiché:
  echo "Toujours vrai"
fi

if false; then
  #ne sera jamais affiché:
  echo "Toujours faux"
fi

#etc, j'ai pas d'exemple utile sous la main :p


Les "argument" entres les crochets de la condition if correspondent exactement aux arguments qu'il faudrait passer à la commande test.

God bless America.
Chuck Norris blesse tout le monde
 
Hors ligne kilian # Posté le 28/05/2009 à 17:27:19

Par ailleurs, on pourrait parler de la syntaxe suivante :
Code : Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/bin/bash

read x
read y

if [[ $x = $y ]]; then
    echo "x est égal à y"
fi

#équivalant à...
if [ $x -eq $y ]; then
    echo "x est égal à y"
fi
Hors ligne smilz # Posté le 28/05/2009 à 18:41:25
La vie est une blague
Avatar
Flux RSS

Il faudrait préciser que dans elif, une fois une condition vérifier, toutes les autres sont sautées, il faut donc parfois user de pleins if - fi au lieu d'un gros if - elif - fi, de plus, tu ne dis pas que dans un if - elif, le else est aussi facultatif (pas bien grave) et pour le signes de comparaison, des
≠ = ≥ ≤ seraient plus propres. Quitte à rajouter une colonne « équivalent en C », les signes que je propose sont « plus parlant » pour le néophyte.
Hors ligne deax_one # Posté le 17/06/2009 à 13:26:13

Salut Mateo,

merci poiur tous tes tutos, que je suis depuis quelques temps maintenant.

Concernant ce tuto, il serait bon de préciser d'encadrer les variables à tester par des double quotes.
Sinon, quand tu testes une variable vide (ce qui arrive dans quelques scripts), tu as une erreur.

Du coup,
Code : Bash
1
if [ "$1" = "toto" ]

est mieux que
Code : Bash
1
if [ $1 = "toto" ]
Hors ligne Jarode01 # Posté le 22/07/2009 à 05:02:04

Citation : m@teo
-z $chaine Teste si la chaîne est vide
-n $chaine Teste si la chaîne est non vide


Heu pourquoi a t'on créé les 2 test ci dessus au lieu d'en créer un seul et de mettre un ! devant pour tester le contraire ? :o

Sinon bravo pour ce tuto c'est super mais dommage qu'il n'y en ai pas un autre qui suive celui là et o`u l'on voit des choses plus pointu car j'ai soif de connaissance moi ! :)

Un SUPER Site et Forum sur l'étude et l'élevage des FOURMIS:
Image utilisateur
 
Hors ligne farid63100 # Posté le 24/07/2009 à 00:23:54

Peut-on tester des nombres dans un case? j'ai essayer, je n'y arrive pas.
Hors ligne lufoqre # Posté le 30/11/2009 à 21:06:27

Bonjour, je suis désolé de faire le curieux, mais on peut utiliser | pour faire un ou dans case, on peut aussi utiliser & ?
Pour accéder à cette section
Connectez-vous !
connexion_rpx