我想知道为什么代码块在下面这个例子中使用:代码块使用{}在bash
possibly_hanging_job & { sleep ${TIMEOUT}; eval 'kill -9 $!' &> /dev/null; }
这可能是这样写的(不使用代码块为好)..right?
possibly_hanging_job &
sleep ${TIMEOUT}
eval 'kill -9 $!' &> /dev/null
我想知道为什么代码块在下面这个例子中使用:代码块使用{}在bash
possibly_hanging_job & { sleep ${TIMEOUT}; eval 'kill -9 $!' &> /dev/null; }
这可能是这样写的(不使用代码块为好)..right?
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
发生。
是的,我没有看到任何理由让大括号出现在这里。
其实我甚至想知道为什么有eval
。据我所见,它也应该没有这个工作。
关于您的实际问题: 我猜这个代码块是为了强调sleep
属于kill
。但没有必要。它也应该像这样工作:
possibly_hanging_job & sleep ${TIMEOUT}; kill -9 $! &> /dev/null