Erreur [: -lt: opérateur unaire attendu dans le script shell Linux [fermé]

Clôturé. Cette question est hors sujet . Il naccepte pas les réponses actuellement.

Commentaires

  • Obtenez-vous également des erreurs de expr?
  • aucune erreur affichée sur expr
  • Utiliser plus de devis ™
  • La prochaine fois, veuillez nous indiquer TOUS les messages derreur que vous recevez. Pas seulement le dernier dun ensemble. Vous auriez également obtenu expr: syntax error.

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++)) 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *