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
.