Gesloten. Deze vraag is off-topic . Het accepteert momenteel geen antwoorden.
Reacties
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++))
expr?expr: syntax errorhebben gekregen.