Spróbuj zmiana wszystkich +1
s po expr
na + 1
.
Bez spacji expr
zwróci błąd, a $temp
będzie puste. Jeśli $temp
jest pusty, to -lt
będzie porównywać spację z liczbą, dlatego pojawia się błąd. Oto „jedna linijka, która odtwarza problem:
t=0;t=`expr $t +1`;[ $t -lt 25 ]
Wyjście (do STDERR):
expr: syntax error bash: [: -lt: unary operator expected
Jeszcze lepiej, zmień cały kod, który używa zewnętrznego narzędzia expr
, aby używał własnego wewnętrznego rozwinięcia arytmetycznego powłoki. Tak więc kod taki:
temp=`expr $temp +1`
… należy zmienić na:
temp=$(($temp + 1))
Lub w bash
, całą tę linię można zastąpić tylko: