今天我打开gnome-terminal
并写了
ls && sleep 4 && gnome-terminal
ls
命令完成后打开另一个终端并等待4秒。
因此,在之前的命令完全运行(包括sleep 4
)后,它成功地打开了一个新终端。
之后,下次我输入新命令时
ls -lR && sleep 4 && gnome-terminal
该命令ls -lR
在 3 秒后完成,但之后没有任何命令sleep 4
并gnome-terminal
成功运行。
问题是什么?
&&
表示如果前一个命令成功则运行它。在 Unix 中,这通常意味着退出状态 0。
$ ls barfoofba && echo "This will not be echo'd"
ls: cannot access 'barfoofba': No such file or directory
$ ls bar && echo "This will be echo'd"
This will be echo'd
在第一个实例中,ls
没有成功,所以它以非零退出状态退出,并且 bash 没有运行第二个命令。
在第二个例子中,我 ls 已经存在一个文件,所以 ls 以 0 作为退出状态退出,并且命令被执行。
如果你想无条件地运行命令,例如不依赖于第一个的结果,你可以;
像这样将它们分开
command1; command2; command3
等等。
因此你可以这样做
ls -lR ; sleep 4 ; gnome-terminal
除了&&
and ;
you have||
这与以下相反&&
:仅当上一个命令失败且退出状态为非零时才运行该命令。如果第一个命令成功,则不会执行下一个命令。如果失败,将执行下一个。
简而言之:
&&
: 如果前面的命令以 0 退出,则运行 ;
: 无条件运行||
:如果前面的命令以非零退出状态退出,则运行。&
:并行运行两个命令,第一个在后台,第二个在前台。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句