我想知道为什么在下面的例子中使用代码块:
possibly_hanging_job & { sleep ${TIMEOUT}; eval 'kill -9 $!' &> /dev/null; }这可能是这样写的(也不使用代码块) ..right?
possibly_hanging_job &
sleep ${TIMEOUT}
eval 'kill -9 $!' &> /dev/null发布于 2011-04-19 22:43:39
将最后两个命令放在大括号中清楚地表明,“这不只是我们碰巧在可能挂起的长时间运行的进程之后运行的两个额外命令;相反,它们是在我们继续处理shell脚本的其余部分之前正确关闭它所不可或缺的。”如果作者写道:
command &
a
b
c目前还不完全清楚a和b是否只是让command正确结束的一部分。通过这样写它:
command & { a; b; }
c作者更清楚地表明,a和b的存在是为了在实际的下一步c发生之前完全结束和清理command。
发布于 2011-04-19 22:44:09
实际上,我甚至想知道为什么会有一个eval。据我所知,它应该在没有它的情况下也能工作。
关于您的实际问题:我猜代码块是为了强调sleep属于kill。但这并不是必须的。它也应该是这样工作的:
possibly_hanging_job & sleep ${TIMEOUT}; kill -9 $! &> /dev/nullhttps://stackoverflow.com/questions/5717972
复制相似问题