suis-je devenu fou ?

Jeremy Monnet jmonnet at gmail.com
Mon Dec 17 14:39:07 CET 2007


On Dec 17, 2007 2:25 PM, Bruno Bonfils <asyd at asyd.net> wrote:
> Bonjour les gens,
>
> soit un bash sur un solaris,
>
> grep -i pattern <fichier>
>
> if [ ! $? ]; then
>         echo trouvé
> fi
>
> en -x :
>
> + '[' '!' 0 ']'
>
> Et pourtant mon if n'est pas "exécuté", alors que [[ $? == 0 ]]
> fonctionne
>
> j'aurais loupé quelque chose sur l'utilisation du ! ?!
>

jems at jems-laptop:~$ test 0 && echo "vrai"
vrai
jems at jems-laptop:~$ test 1 && echo "vrai"
vrai
jems at jems-laptop:~$ test -1 && echo "vrai"
vrai


extrait du man builtins :
 test expr
       [ expr ]
              Return  a  status  of 0 or 1 depending on the evaluation of the
              conditional expression expr.

test évalue une expression (donc pas une valeur) d'où le fait que ca
fonctionne dans ton deuxième exemple.

Ceci étant, je ne sais pas pourquoi dans ce cas précis tu ne testes
pas directement le retour de grep ?
if ! grep -i pattern <fichier>; then

fi

Jeremy


More information about the Shell mailing list