Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1941 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Test d'égalité en bash ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Test d'égalité en bash ?

n°652806
weed
Posté le 21-03-2005 à 12:55:53  profilanswer
 

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

mood
Publicité
Posté le 21-03-2005 à 12:55:53  profilanswer
 

n°652810
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 21-03-2005 à 12:58:04  profilanswer
 

&& et || ?


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°652828
Pillow
'cos the trees won't talk
Posté le 21-03-2005 à 13:29:24  profilanswer
 

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


n°652836
Zaib3k
Posté le 21-03-2005 à 14:05:04  profilanswer
 

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.
n°652840
Pillow
'cos the trees won't talk
Posté le 21-03-2005 à 14:07:38  profilanswer
 

-e sert à tester si un fichier existe.

n°652841
Zaib3k
Posté le 21-03-2005 à 14:08:29  profilanswer
 

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.
n°652843
Pillow
'cos the trees won't talk
Posté le 21-03-2005 à 14:11:42  profilanswer
 

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


Message édité par Pillow le 21-03-2005 à 14:11:53
n°652845
Tomate
Posté le 21-03-2005 à 14:17:09  profilanswer
 

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 ::
n°652847
xouille38
Posté le 21-03-2005 à 14:26:03  profilanswer
 

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
n°652849
Tomate
Posté le 21-03-2005 à 14:29:37  profilanswer
 

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


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

---------------
:: Light is Right ::
mood
Publicité
Posté le 21-03-2005 à 14:29:37  profilanswer
 

n°652850
xouille38
Posté le 21-03-2005 à 14:31:45  profilanswer
 

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

n°652851
Tomate
Posté le 21-03-2005 à 14:37:34  profilanswer
 

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 ::
n°652856
xouille38
Posté le 21-03-2005 à 14:51:44  profilanswer
 

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:

n°652857
Tomate
Posté le 21-03-2005 à 14:52:25  profilanswer
 

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 ::
n°652861
xouille38
Posté le 21-03-2005 à 15:00:29  profilanswer
 

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
n°652863
weed
Posté le 21-03-2005 à 15:03:10  profilanswer
 

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

n°652865
weed
Posté le 21-03-2005 à 15:04:44  profilanswer
 

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

n°652868
Tomate
Posté le 21-03-2005 à 15:05:54  profilanswer
 

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 ::
n°652869
weed
Posté le 21-03-2005 à 15:13:28  profilanswer
 

ahh yep oki tomate

n°652871
weed
Posté le 21-03-2005 à 15:21:49  profilanswer
 

weed a écrit :

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


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

n°652874
xouille38
Posté le 21-03-2005 à 15:33:34  profilanswer
 

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

n°652879
Tomate
Posté le 21-03-2005 à 15:37:41  profilanswer
 

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 ::
n°652881
xouille38
Posté le 21-03-2005 à 15:45:27  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Test d'égalité en bash ?

 

Sujets relatifs
[bash] Comment utiliser return pour retourner une valeur ?script bash qui plante
executer rsh dans un script bash[bash] chown dans un script
[bash] lancer une appli sur un autre ecranScript BASH : Innactivite...
testScript test d'activité entre 2 machines
[RESOLU][Nagios]execution de test en //bash: qmake: command not found [resolu]
Plus de sujets relatifs à : Test d'égalité en bash ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR