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: