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
后面的语句依然执行。
2 什么是命令成功/失败
一个命令的返回值,也就是命令定义内部的return值,表示退出状态码。
退出状态码为0,则表示命令执行成功,否则为失败。
命令本身错误,也属于失败。
要通过$?查看上一条命令的执行情况。
echo $?
结果0表示成功,非0表示失败。
示例
例1:
echo 1
echo $?
echooooo 2
echo $?
false
echo $?
false是一条命令,不真正执行任务内容,返回表示错误的状态码。可查看帮助。
man false
后续我们通过false来表示命令失败。
3 语句&&
命令1 && 命令2 && …命令n
前面的命令失败,则后面的命令不执行。
示例
例1:全部成功执行
echo 1 && echo 2 && echo 3
例2:部分执行失败
echo 1 && false && echo 3
4 语句||
命令1 || 命令2 || …命令n
前面的成功后面不执行,前面失败后面才执行。意味着最多执行其中一条。
例1:全部成功执行
echo 1 || echo 2 || echo 3
例2:部分执行失败
false || false || echo 3
5 语句&
命令1 & 命令2 & …命令n
&表示多条命令同时并行执行。
示例
sleep 5 & echo "xiaobuteach.com"
sleep 5表示等待5秒,使用&后会立即显示第2条命令的内容。
如果将&改为分号;则会等待再显示。