Estou escrevendo um script que lança um framebuffer virtual com Xvfb. Quero ter certeza de que o comando foi bem-sucedido, mas não quero que o script espere até que o comando seja concluÃdo, porque o Xvfb continua em execução até que o servidor X seja encerrado. Por exemplo:
if ! Xvfb $DISPLAY &; then
echo 'Error: failed to create virtual frame buffer'
exit 1
fi
xpid=$!
# do stuff that uses frame buffer
kill $xpid
O problema com isso é que lança um erro de sintaxe em &;
:
$ stuff.sh
stuff.sh: line 149: syntax error near unexpected token `;'
stuff.sh: line 149: `if ! Xvfb $DISPLAY &; then'
Eu tentei mudar essa linha para if ! Xvfb $DISPLAY & ;
, mas ainda lança o erro.
O
&
sÃmbolo é umcontrol operator
e encerra a lista de comandos a serem testados. Seguindo essa definição, o seguinte está livre de erros de sintaxe :O problema é que, ao colocar o
Xvfb
comando em segundo plano, o resultado do teste sempre será zero/verdadeiro.Eu iniciaria o processo, esperaria o tempo suficiente para que ele morresse e verificaria se ainda está por perto:
Referências: