它们似乎都向 BASH 发出信号,要求其在符号后开始另一个命令,但是它们之间有明显的区别吗?
答案1
使用以下行:
command1 && command2
当且仅当 command1 返回退出状态零时,才会执行 command2,而在此行中:
command1 ; command2
无论如何,command1 和 command2 都将被执行。分号允许您在一行中键入多个命令。
答案2
你可以自己尝试一下其中的区别:
ls /invalid/path && echo "hello!"
由于 /invalid/path 不存在,ls 无法显示目录列表。它会失败并显示错误消息:“ls:/invalid/path:没有这样的文件或目录”
。下半场命令(echo "hello!")是甚至从未被执行因为上半场失败了。ls /invalid/path ; echo "hello!"
出现与之前相同的错误消息,但这一次,第二部分执行!
ls: /invalid/path: 没有此文件或目录
你好!
这有什么用呢?
假设您要提取一个名为 archive.tar.gz 的文件,
您可以使用命令tar zxvf archive.tar.gz && rm archive.tar.gz
。
如果出于任何原因提取存档失败,则不会执行第二部分!您可以再试一次。
如果您在相同情况下使用 ;,档案将被删除,并且您无法再试一次。
答案3
&&
是AND
,这意味着只有当第一个命令返回 true(无错误)时,第二个命令才会执行。
答案4
尝试
错误 && 回显“你好”
和
假;回显“你好”
看到不同