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 error
hebben gekregen.