首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash中的代码块使用{}

bash中的代码块使用{}
EN

Stack Overflow用户
提问于 2011-04-19 22:27:17
回答 2查看 19.8K关注 0票数 17

我想知道为什么在下面的例子中使用代码块:

代码语言:javascript
复制
possibly_hanging_job & { sleep ${TIMEOUT}; eval 'kill -9 $!' &> /dev/null; }

这可能是这样写的(也不使用代码块) ..right?

代码语言:javascript
复制
possibly_hanging_job & 
sleep ${TIMEOUT}
eval 'kill -9 $!' &> /dev/null
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-19 22:43:39

将最后两个命令放在大括号中清楚地表明,“这不只是我们碰巧在可能挂起的长时间运行的进程之后运行的两个额外命令;相反,它们是在我们继续处理shell脚本的其余部分之前正确关闭它所不可或缺的。”如果作者写道:

代码语言:javascript
复制
command &
a
b
c

目前还不完全清楚ab是否只是让command正确结束的一部分。通过这样写它:

代码语言:javascript
复制
command & { a; b; }
c

作者更清楚地表明,ab的存在是为了在实际的下一步c发生之前完全结束和清理command

票数 23
EN

Stack Overflow用户

发布于 2011-04-19 22:44:09

实际上,我甚至想知道为什么会有一个eval。据我所知,它应该在没有它的情况下也能工作。

关于您的实际问题:我猜代码块是为了强调sleep属于kill。但这并不是必须的。它也应该是这样工作的:

代码语言:javascript
复制
possibly_hanging_job & sleep ${TIMEOUT}; kill -9 $! &> /dev/null
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5717972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档