Test d'égalité en bash ?

Test d'égalité en bash ? - Codes et scripts - Linux et OS Alternatifs

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" = "#" ]

Reply

Marsh Posté le 21-03-2005 à 12:55:53   

Reply

Marsh Posté le 21-03-2005 à 12:58:04    

&& et || ?


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 21-03-2005 à 13:29:24    

weed a écrit :

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  
 


Au moins trois possibilités:

Code :
  1. if [ -z $(cat /etc/group | grep -w $t) ]
  2. then


Code :
  1. if [ "$(cat /etc/group | grep -w $t)" = "" ]
  2. then


Code :
  1. if [ a$(cat /etc/group | grep -w $t) = a ]
  2. then


Reply

Marsh Posté le 21-03-2005 à 14:05:04    

pour tester les chaines il faut utiliser -e à la place d'=.
 
je crois :o


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
Reply

Marsh Posté le 21-03-2005 à 14:07:38    

-e sert à tester si un fichier existe.

Reply

Marsh Posté le 21-03-2005 à 14:08:29    

exact. -eq :o
 
de toute façon c'est pas ca :D -eq est pour les entier.
 
j'ai rien dit :D


Message édité par Zaib3k le 21-03-2005 à 14:09:31

---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
Reply

Marsh Posté le 21-03-2005 à 14:11:42    

Qu'est ce que tu reproches au = au juste?


Message édité par Pillow le 21-03-2005 à 14:11:53
Reply

Marsh Posté le 21-03-2005 à 14:17:09    

res = `cat /etc/group | grep -w $t`
if [ "X$res" = "X" ] #si la chaîne est vide
then
 echo "plop"
else
 echo "plip"
fi


---------------
:: Light is Right ::
Reply

Marsh Posté le 21-03-2005 à 14:26:03    

Tomate a écrit :

res = `cat /etc/group | grep -w $t`
if [ "X$res" = "X" ] #si la chaîne est vide
then
 echo "plop"
else
 echo "plip"
fi



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


Message édité par xouille38 le 21-03-2005 à 14:30:17
Reply

Marsh Posté le 21-03-2005 à 14:29:37    

j'ai fait un truc générique ;)


Message édité par Tomate le 21-03-2005 à 14:29:43

---------------
:: Light is Right ::
Reply

Marsh Posté le 21-03-2005 à 14:29:37   

Reply

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

Reply

Marsh Posté le 21-03-2005 à 14:37:34    

xouille38 a écrit :

je dis bof et j'ajoute :
 
grep ${t} /etc/group >/dev/null 2>&1 && echo plip


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


Message édité par Tomate le 21-03-2005 à 14:38:26

---------------
:: Light is Right ::
Reply

Marsh Posté le 21-03-2005 à 14:51:44    

Tomate a écrit :

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


 
 :heink:  
il se trouve que si! :whistle:

Reply

Marsh Posté le 21-03-2005 à 14:52:25    

xouille38 a écrit :

:heink:  
il se trouve que si! :whistle:


peu être dans ce cas précis, mais pas en général [:mrbrelle]


---------------
:: Light is Right ::
Reply

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 [:mrbrelle]


tu as dit grep!
 
 et ça alors :
 
[ "X`grep ${t} /etc/group`" != "X" ] && echo plip


Message édité par xouille38 le 21-03-2005 à 15:01:50
Reply

Marsh Posté le 21-03-2005 à 15:03:10    

Tomate a écrit :

res = `cat /etc/group | grep -w $t`
if [ "X$res" = "X" ] #si la chaîne est vide
then
 echo "plop"
else
 echo "plip"
fi



 
"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 ..

Reply

Marsh Posté le 21-03-2005 à 15:04:44    

Comment utlise t'on les ou logique ?
 
if [ "$tmp" = "" ||  "$tmp" ="#" ]
ne passe pas.

Reply

Marsh Posté le 21-03-2005 à 15:05:54    

weed 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 ..


je mets un "X" car si la variable est vide alors "X$res" sera juste "X"
 
:p


---------------
:: Light is Right ::
Reply

Marsh Posté le 21-03-2005 à 15:13:28    

ahh yep oki tomate

Reply

Marsh Posté le 21-03-2005 à 15:21:49    

weed a écrit :

Comment utlise t'on les ou logique ?
 
if [ "$tmp" = "" ||  "$tmp" ="#" ]
ne passe pas.


 
en fait ca marche : if [ $tmp == "" ] || [ $tmp == "#" ]

Reply

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

Reply

Marsh Posté le 21-03-2005 à 15:37:41    

xouille38 a écrit :

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


 :jap:  
 
d'où mon "X" :p


---------------
:: Light is Right ::
Reply

Marsh Posté le 21-03-2005 à 15:45:27    

Tomate a écrit :

:jap:  
 
d'où mon "X" :p


 
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 ]! :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed