Chiusa. Questa domanda è fuori tema . Attualmente non accetta risposte.
Commenti
Risposta
Prova cambiando tutti i +1 dopo expr in + 1.
Senza lo spazio expr restituirà un errore e $temp sarà vuoto. Se $temp è vuoto, -lt confronterà uno spazio vuoto con un numero, motivo per cui viene visualizzato lerrore. Ecco “una riga che riproduce il problema:
t=0;t=`expr $t +1`;[ $t -lt 25 ]
Output (a STDERR):
expr: syntax error bash: [: -lt: unary operator expected
Ancora meglio, cambia tutto il codice che usa lutilità esterna expr per usare lespansione aritmetica interna della shell. Quindi un codice come questo:
temp=`expr $temp +1`
… dovrebbe essere cambiato in:
temp=$(($temp + 1))
Oppure, in bash , lintera riga può essere sostituita solo con:
((temp++))
expr?expr: syntax error.