我想知道为什么在下面的这个例子中使用了代码块:
possibly_hanging_job & { sleep ${TIMEOUT}; eval 'kill -9 $!' &> /dev/null; }
这本可以这样写(也不使用代码块)..对吗?
possibly_hanging_job &
sleep ${TIMEOUT}
eval 'kill -9 $!' &> /dev/null
最佳答案
将最后两个命令放在大括号中清楚地表明“这些不仅仅是我们碰巧在可能挂起的长时间运行的进程之后运行的两个额外命令;相反,在我们继续执行 shell 脚本的其余部分之前,它们是正确关闭它不可或缺的一部分。”如果作者改为写:
command &
a
b
c
a
和 b
只是让 command
正确结束的一部分,这还不是很清楚。像这样写:
command & { a; b; }
c
作者更清楚地表明 a
和 b
的存在是为了让 command
在 之前完全结束和清理实际下一步,c
,发生。
关于bash - bash 中的代码块用法 { },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5717972/