Fout [: -lt: unaire operator verwacht in shellscript Linux [gesloten]

Gesloten. Deze vraag is off-topic . Het accepteert momenteel geen antwoorden.

Reacties

  • Krijg je ook fouten van expr?
  • er wordt geen fout weergegeven bij expr
  • Use More Quotes ™
  • Vertel ons de volgende keer ALLE foutmeldingen die u krijgt. Niet alleen de laatste van een set. Je zou ook expr: syntax error hebben gekregen.

Antwoord

Probeer het wijzigen van alle +1 s na de expr s in + 1.

Zonder de spatie zal expr een foutmelding geven en $temp zal leeg zijn. Als $temp leeg is, dan zal de -lt een spatie vergelijken met een getal, daarom verschijnt de fout. Hier “een enkele voering die het probleem reproduceert:

t=0;t=`expr $t +1`;[ $t -lt 25 ] 

Uitvoer (naar STDERR):

expr: syntax error bash: [: -lt: unary operator expected 

Beter nog, verander alle code die het externe gebruik expr gebruikt om de eigen interne rekenkundige uitbreiding van de shell te gebruiken. Dus code als deze:

temp=`expr $temp +1` 

… moet worden gewijzigd in:

temp=$(($temp + 1)) 

Of in bash , die hele regel kan worden vervangen door alleen:

((temp++)) 

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *