Parece que você encontrou um bug no ksh93.
Eu posso reproduzi-lo (ksh93u +) com:
$ x= ksh -c '[[ 0*1 -eq 5 ]]'
ksh: *1: arithmetic syntax error
Tudo bem com:
ksh -c '[[ " 0*1" -eq 5 ]]'
embora. E parece que foi corrigido em ksh93v- (beta) porque não consigo reproduzi-lo lá.
De qualquer forma, eu usaria:
if ((f_count * sleep_interval % alarm_interval == 0 && f_count > 0)); then
Algumas notas:
- dentro de
[[...]],>é para comparação de cadeia (em que10é menor que 2 e, dependendo da localidade,-1pode ser maior que 0). Use-gtpara comparação numérica (embora seja melhor usar((...))). -
evite expandir variáveis dentro de expressões aritméticas, como em, use
xem vez de$x. Por exemplo, compare:$ x=-1 ksh -c '((-$x > 0))' ksh: --1 > 0: assignment requires lvaluecom
$ x=-1 ksh -c '((-x > 0))' $Ou:
$ x=1+1 ksh -c 'echo "$(($x * 2)) $((x * 2))"' 3 4