Shell 一行多条命令

一行多条命令,命令之间可用符号:

; 多条命令顺序执行;

&& 前面的失败后面不执行;

|| 前面的成功后面不执行;

& 多条命令同时执行。

1 语句;

命令1;命令2;…命令n

多条命令依次顺序执行,无论前面的命令成功或失败。

例1:全部成功

echo 1;echo 2;echo 3

例2:前面有命令失败

ech 1;echo 2;echo 3

这里通过故意把命令名echo写错为ech,让命令执行失败。

例3:false命令代表失败

false;echo 2;echo 3

img

后面的语句依然执行。

2 什么是命令成功/失败

一个命令的返回值,也就是命令定义内部的return值,表示退出状态码。

退出状态码为0,则表示命令执行成功,否则为失败。

命令本身错误,也属于失败。

要通过$?查看上一条命令的执行情况。

echo $?

结果0表示成功,非0表示失败。

示例

例1:

echo 1
echo $?
echooooo 2
echo $?
false
echo $?

img

false是一条命令,不真正执行任务内容,返回表示错误的状态码。可查看帮助。

man false

后续我们通过false来表示命令失败。

3 语句&&

命令1 && 命令2 && …命令n

前面的命令失败,则后面的命令不执行。

示例

例1:全部成功执行

echo 1 && echo 2 && echo 3

例2:部分执行失败

echo 1 && false && echo 3

img

4 语句||

命令1 || 命令2 || …命令n

前面的成功后面不执行,前面失败后面才执行。意味着最多执行其中一条。

例1:全部成功执行

echo 1 || echo 2 || echo 3

img

例2:部分执行失败

false || false || echo 3

img

5 语句&

命令1 & 命令2 & …命令n

&表示多条命令同时并行执行。

示例

sleep 5 & echo "xiaobuteach.com"

sleep 5表示等待5秒,使用&后会立即显示第2条命令的内容。

如果将&改为分号;则会等待再显示。