2010-01-31 6 views
4

Il peut sembler un peu trivial, mais il est en fait assez frustrant: Quelqu'un peut-il me l'expliquer:Comportement inattendu de expr


[~:user$]expr 3 + 2 
6 
[~:user$]expr 3/2 
1 
[~:user$]expr 3 * 2 
expr: syntax error 

Lorsque la page de manuel pour expr spécifie précisément que PARAM1 * PARAM2 est produit arithmétique tous les deux.

Merci,

Répondre

8

Vous devez citer le *, car sinon fichier les tentatives de shell extension de nom.

$ expr 3 '*' 2 
6 
2

* est dilatée par votre shell avant d'atteindre expr, il contient donc Documents, Videos, Work, nsfw, etc.

+0

vous dire le contenu du répertoire courant? – sud03r

+0

C'est exact. –

2

@OP, son entièrement à vous, mais je dirais encore utiliser opération d'addition interne de la coquille au lieu d'appeler expr externe

$ echo $((3*2)) 
6 

Si vous avez besoin d'opérations mathématiques plus avance, utilisez bc (dc) ou awk.

Questions connexes