我正在编写一个使用 Xvfb 启动虚拟帧缓冲区的脚本。我想确保命令成功,但我不希望脚本等到命令完成,因为 Xvfb 会继续运行,直到 X 服务器被杀死。例如:
if ! Xvfb $DISPLAY &; then
echo 'Error: failed to create virtual frame buffer'
exit 1
fi
xpid=$!
# do stuff that uses frame buffer
kill $xpid
问题在于它会引发语法错误&;
:
$ stuff.sh
stuff.sh: line 149: syntax error near unexpected token `;'
stuff.sh: line 149: `if ! Xvfb $DISPLAY &; then'
我尝试将该行更改为,if ! Xvfb $DISPLAY & ;
但它仍然会引发错误。
&
符号是 acontrol operator
并结束要测试的命令列表。根据该定义,以下内容没有语法错误:问题是,通过后台
Xvfb
命令,测试结果将始终为零/真。我会开始这个过程,然后等待足够长的时间让它死掉,然后检查它是否仍然存在:
参考: