Bash “final inesperado do arquivo” na linha 11, não há linha 11

1

Estou tentando um novo tema conky no meu sistema Lubuntu, e para executá-lo eu preciso iniciar um script bash:

#!/bin/bash
#sleep 18&&
conky -c /home/mathijs/conky/conky1&&
sleep 1&&
conky -c /home/mathijs/conky/conky2&&
sleep 1&&
conky -c /home/mathijs/conky/conky3&&
sleep 1&&
conky -c /home/mathijs/conky/conkyxx&&
sleep 1&&

Quando eu executo o script, o terminal me dá este erro:

./start.sh: line 11: syntaxerror: unexpected end of file

No entanto, no script, existem apenas 10 linhas. Eu reescrevi com a mão e verifiquei novamente, mas recebi o mesmo erro. O que estou perdendo?

    
por MetNL 29.07.2015 / 15:53

2 respostas

8

O metacaractere do shell && espera um comando depois, que seria executado se o primeiro comando for bem-sucedido.

É por isso que você está recebendo a mensagem de erro.

Por exemplo, você tem sleep 1&& na décima linha, agora o shell executará sleep 1 e, em seguida, se for bem-sucedido (código de saída 0), o ( && ) executará o próximo comando, que não é fornecido por você. Então você receberia uma mensagem de erro unexpected end of file .

Também acho que você quis usar & em vez de && .

& levará um processo de primeiro plano para o plano de fundo, para que você possa fazer outros materiais em primeiro plano. Além disso, isso pode não ser uma boa idéia com o comando sleep (depende do caso de uso), pois sleep pretende pausar a execução do comando no script ou o terminal pelo tempo mencionado, se você o levar para o fundo adicionando & eg sleep 1& o próximo comando será executado instantaneamente, pois a ordem de execução não será sincronizada neste caso.

    
por heemayl 29.07.2015 / 15:57
1

O último comando sleep 1&& espera ter outra coisa.

Se você remover o último && , não haverá erros.

    
por Pilot6 29.07.2015 / 15:57