我明白了| 将第一个命令的输出通过管道传输到第二个命令的标准输入。& 如何关联两个过程?
问问题
2587 次
3 回答
8
可能您想知道&&
not &
(用于在后台执行命令)
这个命令:
command1 | command2
表示将 command1 的输出作为 command2 的输入(stdin)传递
但是在这个命令中:
command1 && command2
表示仅当 command1 成功时才执行 command2
于 2013-11-09T10:22:07.850 回答
4
单个符号(&)
用于背景。它使命令在后台运行。
也来自man bash
:
如果命令由控制运算符 & 终止,则 shell 在子 shell 的后台执行命令。shell 不等待命令完成,返回状态为 0。
所以如果你写这样的东西:
find -name hello &
这将使find
命令被分叉并在后台运行
在你的情况下,单一的 & 与这两个过程没有任何关系。
您可能正在寻找
command1 && command2
于 2013-11-09T10:20:25.017 回答
4
&
不以任何方式关联两个过程;它在“后台”启动一个进程,以便您正在运行的 shell 继续其工作,而无需像往常一样等待进程终止。
你大概在想&&
。命令行
command 1 && command 2
首先执行command 1
,如果成功(状态码为 0 退出),则执行command 2
. 复合的退出状态是第一个命令的退出状态,如果不成功,否则退出状态2。
例如,以下命令行可用于从源代码安装 Unix 软件,但前提是它已成功配置、编译并运行所有测试。
./configure && make && make test && make install
于 2013-11-09T10:22:31.393 回答