Esta mensagem de erro vem de ash . Existem vários shells com uma sintaxe similar. Ash é relativamente básico, projetado para uma pegada de memória pequena e execução rápida. Outro shell comum é o Bash . Bash tem mais recursos. A sintaxe que você postou existe apenas no bash (e alguns outros shells, mas não ash).
Em cinza, você precisaria escrever:
day=5
while [ $day -lt 367 ]; do
…
day=$((day + 5))
done
Note que dependendo da distribuição do Linux, /bin/sh
é ash ou bash (alguns exóticos podem usar outras implementações). Se você está escrevendo um script que usa a sintaxe bash, coloque #!/bin/bash
no topo.
¹ Supondo que você quis dizer day+=5
onde escreveu day+5
, caso contrário, é um loop infinito.