【发布时间】:2013-11-09 10:18:10
【问题描述】:
我明白了|将第一个命令的输出通过管道传输到第二个命令的标准输入。 & 如何关联两个过程?
【问题讨论】:
标签: linux bash process terminal pipe
我明白了|将第一个命令的输出通过管道传输到第二个命令的标准输入。 & 如何关联两个过程?
【问题讨论】:
标签: linux bash process terminal pipe
可能您想了解&& 而不是&(用于在后台执行命令)
这个命令:
command1 | command2
表示将command1的输出作为command2的输入(stdin)传递
但是在这个命令中:
command1 && command2
意味着只有在 command1 成功时才执行 command2
【讨论】:
&,而不是 &&,尽管 OP 的意思可能是 &&。
&,但它实际上是在要求&&
单个符号(&) 用于背景。它使命令在后台运行。
同样来自man bash:
如果命令被控制操作符 & 终止,shell 在子 shell 的后台执行命令。外壳可以 不等待命令完成,返回状态为0。
如果你这样写:
find -name hello &
这将使find 命令分叉并在后台运行
在您的情况下,单个 & 与这两个过程没有任何关系。
你可能正在寻找
command1 && command2
【讨论】:
& 不以任何方式关联两个进程;它在“后台”启动一个进程,以便您正在运行的 shell 继续其工作,而无需像往常一样等待进程终止。
你可能在想&&。命令行
command 1 && command 2
首先执行command 1,如果成功(退出状态码为0)则执行command 2。复合的退出状态为第一个命令不成功的退出状态,否则为2的退出状态。
例如,以下命令行可用于从源代码安装 Unix 软件,但前提是它已成功配置、编译并运行所有测试。
./configure && make && make test && make install
【讨论】: