"if" a multiple argument

Résolu
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'essai de faire ça :
if [ -z $mode -o $mode="ref"] ;then...
mais ça ne fonctionne pas comme je le voudrai, je n'arrive pas à utilise plusieurs argument de test dans le if, et je ne trouve pas d'exemple. (en espérant que c'est clair).


1 réponse

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

 if [ -z "${mode}" -o "${mode}" = "ref" ] ;then...

Attention aux espaces avant et après chaque crochet ainsi qu'autour du signe "égale" !
Les quotes aussi sont très importantes et prendre l'habitude d'entourer ses variables avec des accolades.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
l'espace avant le ] était une erreur de recopie, mais les espaces autour du '=' était bien la cause du problème. Je ne comprend pas ce qu'il fait dans ce cas là et pourquoi il ne met pas de message d'erreur.
Par contre, les guillemets ne sont pas nécessaire.
Merci !
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Par contre, les guillemets ne sont pas nécessaire.
Ils ne sont pas nécessaire entre double crochets, par contre ils sont recommandés entre simple crochet.

$ B="Un saut
de ligne"

$ C="${B}"

$ echo "${B}";echo "${C}"
Un saut
de ligne
Un saut
de ligne

$ echo ${B};echo "${C}"
Un saut de ligne
Un saut
de ligne

$ if [ ${B} = "${C}" ]; then echo "OK"; else echo "Bad"; fi
bash: [: trop d'arguments
Bad

$ if [ "${B}" = "${C}" ]; then echo "OK"; else echo "Bad"; fi
OK

$


Autre exemple :

$ V=""

$ [ "${V}" = "" ] && echo "Vide ou non définie" || echo "Inconnue"
Vide ou non définie

$ [ ${V} = "" ] && echo "Vide ou non définie" || echo "Inconnue"
bash: [: = : opérateur unaire attendu
Inconnue

$
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Merci pour la précision.
La seule chose que je voulais dire, c'est que l'erreur ne venait pas de là.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Pour l'anecdocte, je n'avais pas modifier, le cas viens de se présenter...
Bien ait pour moi, ça m'apprendra à coder salement -> une dizaine de fichiers à modifier.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
En général ce genre d'erreur est salutaire.
C'est d'ailleurs de nos erreurs qu'on apprend le plus paradoxalement ;-))
0