<åt sidan class = "s-notice s-notice__info js-post-notice mb16 "role =" status ">
Stängd. Denna fråga är utanför ämnet . För närvarande accepteras inte svar.
Kommentarer
Svar
Försök ändra alla +1 s efter expr s till + 1.
Utan mellanslag expr returnerar ett fel och $temp kommer att vara tomt. Om $temp är tom kommer -lt att jämföra ett tomt utrymme med ett tal, varför felet visas. Här ”är en liner som återger problemet:
t=0;t=`expr $t +1`;[ $t -lt 25 ]
Output (to STDERR):
expr: syntax error bash: [: -lt: unary operator expected
Ännu bättre, ändra all kod som använder det externa verktyget expr för att använda skalets egen interna aritmetiska expansion. Så kod så här:
temp=`expr $temp +1`
… bör ändras till:
temp=$(($temp + 1))
Eller, i bash , hela raden kan ersättas med bara:
((temp++))
expr?expr: syntax error.