[shell] binary operator expected?

binary operator expected? [shell] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 24-03-2007 à 10:32:12    

Hello,
 
Dans un script shell, je cherche à vérifier la présence d'une sous chaine dans une chaine.
La chaine est la liste des arguments passée au script.
 
Par exemple:
 

#!/bin/sh
 
if [ $(echo "$*" | grep toto) ]
then
  echo "toto present en argument"
fi


 
ça fonctionne s'il n'y a qu'un argument.
ça fonctionne s'il y a plusieurs arguments, mais pas de toto parmis eux.
ça ne fonctionne pas s'il y a toto dans une liste d'arguments.
 

$ ./test.sh hello toto
./test.sh: line 3: [: hello: unary operator expected


 
Quelqu'un aurait une solution pour moi? :)
 
Merci
 :hello:

Message cité 1 fois
Message édité par Walloo le 24-03-2007 à 10:54:27
Reply

Marsh Posté le 24-03-2007 à 10:32:12   

Reply

Marsh Posté le 24-03-2007 à 11:14:49    

Walloo a écrit :


Quelqu'un aurait une solution pour moi? :)


 
oui : man bash (o:
 

Code :
  1. if [[ -n $(echo $* | grep toto) ]] ;
  2. then
  3.     echo "toto en argument"
  4. else
  5.     echo "pas de toto en argument"
  6. fi


 
par contre, si une chaîne contenant toto est presente dans les arguments (nom du script compris), ca donnera un resultat positif.

Reply

Marsh Posté le 24-03-2007 à 11:21:07    

Oui, c'est exactement le comportement que je cherchais.
 
Merci à toi :)

Reply

Sujets relatifs:

Leave a Replay

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