<å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
.