在 Linux 中连续执行多条命令
1、每条命令使用";"隔开,则无论前边的命令执行成功与否都会继续执行下一条命令
如:
# echo 1; echoo 2; echo 3; echo 4
1
-bash: echoo: command not found
3
4
2、若命令间使用"&&"隔开,则只有前边的命令执行成功了才会继续执行后边的命令
如:
$ echo 1 && echoo 2 && echo 3 && echo 4
1
-bash: echoo: command not found
3、若命令间使用"||"隔开,则只有前边的命令执行失败了才回继续执行后边的命令
如:
# echo 1 || echo 2 || echo 3 || echo 4
1
# 后面2,3,4不会输出
如:
# echoo 1 || echo 2 || echo 3 || echo 4
-bash: echoo: command not found
2
1出错,只执行2,后面不再执行。
其他复杂情况分析
1、根据以上规则分析几个比较特殊的例子,也即混合了集中分隔符的例子
echo 1执行成功了,紧接着后边有两个"||"因此echo 2, echo 3都没执行,后边遇到了&&,而这之前的命令组合被认为是执行成功的,因此echo 4得以执行
$ echo 1 || echo 2 || echo 3 && echo 4
1
4
2、echo 1执行成功了,继而执行echoo 2,执行失败,因此 echo 3不被执行,后边遇到了"||",而知之前的命令组合被认为是执行失败的,因此echo 4得以执行
$ echo 1 && echoo 2 && echo 3 || echo 4
1
-bash: echoo: command not found
4
3、echo 1执行成功了,继而执行echoo 2,执行失败,因此 echo 3不被执行,后边遇到了";",相当于把后边的命令放到了新行,这样的话无论如何后边的命令都会执行,因此echo 4得以执行
$ echo 1 && echoo 2 && echo 3 ; echo 4
1
-bash: echoo: command not found
4
4、echoo 1执行失败,后边为"||"因此echo 2得以执行,echo 2执行成功,紧接着后边有两个"||"因此echo 3,echo 4没有执行,后边遇到了&&,而之前的命令组合被认为是执行成功的,因此echoo5得以执行,执行发生错误,因此echo 6没有被执行,但后边是";",所以无论如何echo 7都会被执行
$ echoo 1 || echo 2 || echo 3 || echo 4 && echoo 5 && echo 6 ; echo 7
-bash: echoo: command not found
2
-bash: echoo: command not found
7