Esse é um script perfeitamente válido. Funcionaria bem em qualquer lugar. Se você está recebendo um erro de sintaxe, é porque houve um erro de sintaxe introduzido quando você copiou / colou o script ou como Thomas teorizou nos comentários que seu arquivo está usando terminadores de linha incorretos.
Você pode verificar os terminadores de linha usando o comando od
, desta forma:
$ od -a foo.sh
0000000 w h i l e sp t r u e nl d o nl sp sp
0000020 sp j a v a sp - j a r sp p r o g r
0000040 a m . j a r nl d o n e nl
0000054
Você pode ver aqui que o script no meu sistema está usando novas linhas (esse é o nl
na saída, logo após, t r u e
, por exemplo). Se, em vez disso, você vir apenas retornos de carro:
0000000 w h i l e sp t r u e cr d o cr sp sp
Ou combinações de retorno de carro / nova linha:
0000000 w h i l e sp t r u e cr nl d o cr nl
Então você precisará corrigir isso.
Depois de fazer as coisas funcionarem, você pode considerar adicionar um comando sleep
ao seu script, assim:
while true
do
java -jar program.jar
sleep 1
done
No caso de program.jar
travar imediatamente, o loop apertado sem pausas pode consumir muita CPU. A introdução de uma pequena pausa resolve em grande parte essa preocupação específica.