Test d'égalité en bash ? - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 21-03-2005 à 12:58:04
&& et || ?
Marsh Posté le 21-03-2005 à 13:29:24
weed a écrit : voilou je n'arrive pas à faire par exemple : |
Au moins trois possibilités:
Code :
|
Code :
|
Code :
|
Marsh Posté le 21-03-2005 à 14:05:04
pour tester les chaines il faut utiliser -e à la place d'=.
je crois
Marsh Posté le 21-03-2005 à 14:08:29
exact. -eq
de toute façon c'est pas ca -eq est pour les entier.
j'ai rien dit
Marsh Posté le 21-03-2005 à 14:11:42
Qu'est ce que tu reproches au = au juste?
Marsh Posté le 21-03-2005 à 14:17:09
res = `cat /etc/group | grep -w $t` |
Marsh Posté le 21-03-2005 à 14:26:03
Tomate a écrit :
|
moi j'aurais fait :
grep ${t} /etc/group
if [ $? -eq 0 ]
then
echo plip
else
echo plop
fi
voire :
if grep ${t} /etc/group
then
echo plip
else
echo plop
fi
propre :
if grep ${t} /etc/group >/dev/null 2>&1
then
echo plip
else
echo plop
fi
Marsh Posté le 21-03-2005 à 14:29:37
j'ai fait un truc générique
Marsh Posté le 21-03-2005 à 14:31:45
Tomate a écrit : j'ai fait un truc générique |
je dis bof et j'ajoute :
grep ${t} /etc/group >/dev/null 2>&1 && echo plip
Marsh Posté le 21-03-2005 à 14:37:34
xouille38 a écrit : je dis bof et j'ajoute : |
oue bah nan
le fait de ne rien renvoyer ne veut pas du tout dire que le code de retour du grep sera 0 ou 1 (ou inversement)
le code de retour est en général un code d'erreur
Marsh Posté le 21-03-2005 à 14:51:44
Tomate a écrit : oue bah nan |
il se trouve que si!
Marsh Posté le 21-03-2005 à 14:52:25
xouille38 a écrit : |
peu être dans ce cas précis, mais pas en général
Marsh Posté le 21-03-2005 à 15:00:29
Tomate a écrit : peu être dans ce cas précis, mais pas en général |
tu as dit grep!
et ça alors :
[ "X`grep ${t} /etc/group`" != "X" ] && echo plip
Marsh Posté le 21-03-2005 à 15:03:10
Tomate a écrit :
|
"X$res", pourquoi mets tu un X avant le $res ?
Sinon comment fais tu sans passer par une variable ?
Comme je l'ai dis
if [ `cat /etc/group | grep -w $t` = "" ]
ne passe pas ..
Marsh Posté le 21-03-2005 à 15:04:44
Comment utlise t'on les ou logique ?
if [ "$tmp" = "" || "$tmp" ="#" ]
ne passe pas.
Marsh Posté le 21-03-2005 à 15:05:54
weed a écrit : "X$res", pourquoi mets tu un X avant le $res ? |
je mets un "X" car si la variable est vide alors "X$res" sera juste "X"
Marsh Posté le 21-03-2005 à 15:21:49
weed a écrit : Comment utlise t'on les ou logique ? |
en fait ca marche : if [ $tmp == "" ] || [ $tmp == "#" ]
Marsh Posté le 21-03-2005 à 15:33:34
if [ X$tmp = X"" -o X$tmp = X"#" ]; then ...
en fait le X protège de l'inexistence de ta variable :
la syntaxe $tmp == "" est foireuse. Si la variable $tmp est vide [ voit == "" d'où too feww arguments
Marsh Posté le 21-03-2005 à 15:37:41
xouille38 a écrit : if [ X$tmp = X"" -o X$tmp = X"#" ]; then ... |
d'où mon "X"
Marsh Posté le 21-03-2005 à 15:45:27
Tomate a écrit : |
J'aime à abonder.
=> weed : voila pour l'explication du X, ensuite le || est un opérateur sur la valeur de retour. Dans ton cas tu confronte les valeurs de retour de tes deux [ (~=/bin/test) c'est donc moins efficace que [ expr1 -o expr2 ]!
Marsh Posté le 21-03-2005 à 12:55:53
voilou je n'arrive pas à faire par exemple :
if [ $(cat /etc/group | grep -w $t) = "" ]
then
alors que si je fais un
if [ $(cat /etc/group | grep -cw $t) = 0 ]
then
cela fonctionne
De plus comment faut il faire pour utiliser les ou logique et les et logique ?
if [ "$tmp" = "" -o "$tmp" = "#" ]