bash - bash 中的代码块用法 { }

标签 bash shell

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

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

ab 只是让 command 正确结束的一部分,这还不是很清楚。像这样写:

command & { a; b; }
c

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

关于bash - bash 中的代码块用法 { },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5717972/

相关文章:

bash - 使用 bash 读取文本文件中行的子集

linux - 如何从外部更改 bash 脚本中的全局变量,以便更改反射(reflect)在 while 循环中?

linux - Bash:WAITING超时

python - 新窗口中的控制台

windows - 如何从现有 WSL bash 窗口启动新的 WSL bash 窗口

linux - 为什么 '' var=value echo $var'' 不发出值?

bash - 带空格的 Shell 变量,引用单个命令行选项

linux shell脚本复制目录树和链接文件

linux - 为什么在 $() 中使用管道时 bash 会执行我的脚本的 2 个实例

shell - 是否可以在命令提示符中创建带有多个选项卡的 CSV 文件?