bash特性--多命令执行
如何在shell命令行中多命令执行。
目录
1.无逻辑关系的多命令执行
~]#COMMAND1;COMMAND2;COMMAND3;......依次执行命令。
2.有逻辑运算的多命令执行。
运算数:真(true,yes,on,1)
假(false,on,off,0)
与:
1&&1=1,1&&0=0,0&&1=0,0&&0=0
或:
1||1=1,1||0=1,0||1=1,0||0=1
非:
!1=0,!0=1。
异或:用的少。运算数,2者相同为0,不同则为1。
短路机制:
~]# COMMAND1&&COMMAND2 将2个命令的执行结果,做与运算。
COMMAND1为 假,COMMAND2 不执行。0&&1=0
COMMAND1为真,COMMAND2必须执行。1&&0(1)=0(1)
~]# COMMAND1&&COMMAND2 将2个命令的执行结果,做或运算。
COMMAND1为 真,COMMAND2 不执行。1||0=1
COMMAND1为假,COMMAND2必须执行。0||1=1
例题1:
[root@localhost ~]# touch /tmp/test.fstab && ls /etc/ >/tmp/test.fstab
创建 /tmp/test.fstab文件,如果执行成功,运行后面的命令。
创建 /tmp/test.fstab文件,如果执行失败,不运行后面的命了。
[root@localhost ~]# touchab /tmp/test.fstab2 && ls /etc/ >/tmp/test.fstab2
-bash: touchab: command not found
第一个命令,运行失败,第二个命令不执行。
实现一种判断,第一个命令运行成功后,直接运行第二个命令。
例题2:
与的关系:第一个命令运行失败,第二个命令进行执行。
没有user1,那就运行命令创建一个user1。
[root@localhost ~]# id user1 || useradd user1
uid=1008(user1) gid=1009(user1) groups=1009(user1)
COMMAND1为 真,COMMAND2 不执行。1||0=1