![带有重定向输出的 Bash 命令无法完成](https://linux22.com/image/1503061/%E5%B8%A6%E6%9C%89%E9%87%8D%E5%AE%9A%E5%90%91%E8%BE%93%E5%87%BA%E7%9A%84%20Bash%20%E5%91%BD%E4%BB%A4%E6%97%A0%E6%B3%95%E5%AE%8C%E6%88%90.png)
我有一个非常简单的 bash 脚本,其中包含几个连续执行的命令。每个命令的输出都重定向到其自己的日志文件。类似这样的
(command --param a > sys.a.log 2>&1)
(command --param b > sys.b.log 2>&1)
(command --param c > sys.c.log 2>&1)
现在,当我运行此脚本时,它启动正常,但当第一个命令完成时(日志文件显示程序的最后一行已执行),进程不会终止。我必须手动终止它,然后脚本才能转到下一行(并创建 sys.b.log)。
这是您期望此脚本的行为吗(我不太了解 bash),或者这是意外行为,我应该在其他地方查找问题吗?如果重要的话,实际命令是“java”,带有一堆参数。
答案1
在 Bash 脚本中使用退出陷阱是一个好主意
一些片段:http://redsymbol.net/articles/bash-exit-traps/
另外,请查看这篇关于编写强大的 shell 脚本以及需要注意的事项的文章:http://www.davidpashley.com/articles/writing-robust-shell-scripts/