如果我想在一行上运行两个单独的命令,我可以这样做:
cd /home; ls -al
Run Code Online (Sandbox Code Playgroud)
或这个:
cd /home && ls -al
Run Code Online (Sandbox Code Playgroud)
我得到了相同的结果。但是,这两种方法在后台发生了什么?它们之间的功能区别是什么?
use*_*517 89
在;刚刚相互分隔命令。该&&说,只有运行下面的命令,如果先前的成功
cd /home; ls -al
Run Code Online (Sandbox Code Playgroud)
这cd /home即使在cd命令失败(/home不存在,你没有权限穿越它,等等),它将运行ls -al。
cd /home && ls -al
Run Code Online (Sandbox Code Playgroud)
ls -al如果cd /home成功,这只会运行。
小智 71
a && b
Run Code Online (Sandbox Code Playgroud)
如果a返回零退出代码,则执行b。
a || b
Run Code Online (Sandbox Code Playgroud)
如果a返回非零退出代码,则执行b。
a ; b
Run Code Online (Sandbox Code Playgroud)
a被执行,然后b被执行。
Jef*_*and 16
cd /fakedir; ls -al
Run Code Online (Sandbox Code Playgroud)
ls在当前目录中运行,因为cd /fakedir将失败并且 shell 将忽略不为零的退出状态。
cd /fakedir && ls -al
Run Code Online (Sandbox Code Playgroud)
因为&&操作员只有在上一个命令正常退出(状态为零)时才会继续,所以ls不会执行任何操作。
还有其他操作符,例如&它们将作为进程的后台。虽然通常放在命令的末尾,但也可以放在链的中间。
| 归档时间: |
|
| 查看次数: |
19186 次 |
| 最近记录: |