我想知道为什么在下面的例子中使用了代码块:
possibly_hanging_job & { sleep ${TIMEOUT}; eval 'kill -9 $!' &> /dev/null; }
Run Code Online (Sandbox Code Playgroud)
这可能是这样编写的(不使用代码块).. right?
possibly_hanging_job &
sleep ${TIMEOUT}
eval 'kill -9 $!' &> /dev/null
Run Code Online (Sandbox Code Playgroud)
Bra*_*des 22
在大括号把最后两个指令明确指出,"这些都不是只有两个,我们额外的命令发生的长时间运行的过程,可能会挂起后要运行; 相反,它们是在我们继续使用shell脚本的其余部分之前正确关闭它们的必要条件."如果作者写了:
command &
a
b
c
Run Code Online (Sandbox Code Playgroud)
它不会是完全清楚,a并且b是刚开的一部分command,以正确结束.通过这样写:
command & { a; b; }
c
Run Code Online (Sandbox Code Playgroud)
作者更清楚地说,a并且b为了command在实际的下一步之前完全结束和清理而存在c.