如何在bash中运行一个捕获输出并等待命令完成的命令?

时间:2016-11-01 15:48:53

标签: linux bash

我在bash脚本中使用以下内容:

command >> /var/log/somelog.log 2>&1&

我之所以这样做,是因为我希望捕获/var/log/somelog.log中的所有输出。

这很好用。 然而它不会等到命令完成。因此,我想问一下,如何在command 中捕获/var/log/somelog.log的所有输出,而不是在command完成之前继续使用bash脚本?< / p>

2 个答案:

答案 0 :(得分:1)

请忽略最后的&号&,例如

command >> /var/log/somelog.log 2>&1

来自Bash - Lists of Commands

  

如果命令由控制操作符'&amp;'终止,则shell在子shell中异步执行命令。这称为在后台执行命令。 shell不等待命令完成,返回状态为0(true)。

答案 1 :(得分:0)

不要将命令放在后台。

最后一个&字符表示&#34;在后台运行此命令,同时立即给我一个新的shell提示符。&#34;

command >> /var/log/somelog.log 2>&1&
                                    ^ this one

从命令中取出最后一个字符,命令将在前台运行直到完成。

这是坦率的介绍性的东西。您是否考虑过阅读有关使用shell的任何文档?