前提:
通常情况下,我们会在终端输入一条命令再输入下一条命令,可是如果我们想要一次性输入多个命令呢?
学习目录
- 顺序执行多条命令
- 有选择的执行命令
&&
||
命令及实例
1顺序执行多条命令
sudo apt-get update
:更新源
sudo apt-get install [软件]
:下载具体的软件
[运行软件]
:运行具体的软件
如果想要一次性输完所有命令,让他们依次去执行可以用;
来完成。
sudo apt-get update;sudo apt-get install [软件];[软件]
2.有选择的执行命令
学习目录
&&
||
如果自动执行命令时,前面的命令不能执行,而后面的命令又依赖于上一条命令的结果,那么就会造成错误,这种情况下我们就需要有一个判断公式来判断上一条命令执行成功后再执行下一条命令,或者不成功我们又该做出其他的处理。
实例:
which cowsay>/dev/null && coway -f head-in ohch~
程序含义:
whoch cowsay>/dev/null
:查询cowsay[文件]
是否在目录/dev/null
中。
&&
:用来实现选择性执行,如果前面的命令执行状态的结果返回0(即查询到)就执行后面,否则就不执行。
cowsay -f head-in ohch~
:cowsay
【牛】在-f head-in
头部聊天框中显示ohch~
补充
||
在这里就是与&&相反的控制效果,当上一条命令执行结果为≠0($?≠0)时则执行它后面的命令。
如何得知命令执行状态的返回结果是否为0或1?
先查询这个文件
which [文件]
然后可以从&
环境变量中获取上一次命令的返回结果
echo $?
也可以结合着&&和||来实现一些操作
实例:
which cowsay>/dev/null && echo "exist || echo "not exist"
流程图
将&&
和||
反过来行不行?
将&&
和||
反过来结果不一样
which cowsay>/dev/null || echo "exist && echo "not exist"
输出not exist
exist
两个都输出
为什么?
which cowsay>/dev/null
的结果不是0,所以||
后面的语句会被执行,而且,||
之后的语句成功执行之后,#?
的值因为成功执行了||
后面的语句变成了0,所以&&
后面的语句执行了。