Pages : 1
#1 Le 22/10/2008, à 14:28
- ®om
Tests en shell : pourquoi ça?
Salut,
On trouve dans certains scripts (par exemple dans /usr/bin/compiz) ce type de comparaison :
[ "x$CM_DRY" = "xyes" ]
Quel est l'intérêt du x? Pourquoi pas :
[ "$CM_DRY" = "yes" ]
Car même quand $CM_DRY est vide, le test fonctionne :
[ "$CM_DRY" = "yes" ] || echo "n'existe pas"
Le test fonctionne... que ça soit avec bash ou en sh (dash).
D'où vient cette pratique?
Hors ligne
#2 Le 22/10/2008, à 15:15
- geenux
Re : Tests en shell : pourquoi ça?
Bonne question, je ne vois pas l'intérêt d'ajouter x des deux côtés !
Hors ligne
#3 Le 22/10/2008, à 16:28
- HP
Re : Tests en shell : pourquoi ça?
surtout que la syntaxe est dépréciée… avec x ou pas…
Dernière modification par HP (Le 22/10/2008, à 16:28)
cat /dev/urandom >/dev/null 2>&1 #github
Hors ligne
#4 Le 22/10/2008, à 16:35
- ®om
Re : Tests en shell : pourquoi ça?
surtout que la syntaxe est dépréciée… avec x ou pas…
Quelle est la nouvelle syntaxe alors?
Hors ligne
#5 Le 22/10/2008, à 16:37
- n3o51
Re : Tests en shell : pourquoi ça?
C'est une ancienne convention au cas ou la variable est vide.J'arrive plus a retrouver la doc qui en parler
Dernière modification par n3o51 (Le 22/10/2008, à 16:44)
Welcome to the real world
________________________________
Hors ligne
#6 Le 22/10/2008, à 19:39
- Link31
Re : Tests en shell : pourquoi ça?
Autant que je me souvienne, c'est tout simplement parce que d'anciennes versions de "test" ne supportaient pas d'avoir un argument vide : "".
Hors ligne
#7 Le 22/10/2008, à 19:59
- Alain.g
Re : Tests en shell : pourquoi ça?
Trouvé ici : http://www.nabble.com/Manual-Example-td4573283.html
The x before the variable ensures that the first argument to `test' does not start with a `-'. The problem here is that it confuses some older implementations of `test' (or the shell that possibly implements it as a builtin command), when $debug happens to be `-z', for example.
Dernière modification par Alain.g (Le 22/10/2008, à 20:00)
Xubuntu Karmic !
Hors ligne
Pages : 1