Clôturé. Cette question est hors sujet . Il naccepte pas les réponses actuellement.
Commentaires
Réponse
Essayez en remplaçant tous les +1
après les expr
par + 1
.
Sans lespace, expr
renverra une erreur et $temp
sera vide. Si $temp
est vide, alors -lt
comparera un espace vide à un nombre, cest pourquoi lerreur apparaît. Voici « une ligne qui reproduit le problème:
t=0;t=`expr $t +1`;[ $t -lt 25 ]
Sortie (vers STDERR):
expr: syntax error bash: [: -lt: unary operator expected
Mieux encore, changez tout le code qui utilise lutilitaire externe expr
pour utiliser la propre expansion arithmétique interne du shell. Donc, un code comme celui-ci:
temp=`expr $temp +1`
… doit être remplacé par:
temp=$(($temp + 1))
Ou, dans bash
, cette ligne entière peut être remplacée par:
((temp++))
expr
?expr: syntax error
.