命令执行的判断依据
- ; 不考虑指令相关性的连续指令下达
依次执行,多条命令用 ; 隔开,会执行完一条命令后去执行接下来的一条 - && 前条指令执行完毕且正确才会执行后条
- || 前条指令执行完毕且错误才会执行后条
指令是否正确值依据 $? 变量来确定的,$?=0正确 $? != 0错误
如果我想要在目录gk下创建文件a(目录不存在就不创建)
┌─╼[~/tsex]
└────╼ ls
┌─╼[~/tsex]
└╼ ls gk && touch gk/a
ls: 无法访问'gk': 没有那个文件或目录
┌─╼[~/tsex]
└╼ mkdir gk
┌─╼[~/tsex]
└────╼ ls gk && touch gk/a
┌─╼[~/tsex]
└────╼ cd gk
┌─╼[~/tsex/gk]
└────╼ ls
a
如果我想在目录gk不存在的情况下创建gk,否则什么都不做
ls gk || mkdir gk
判断是否存在/home/bt目录,存在即输出“ok”否则输出“not”
ls /home/bt && echo "ok" || echo "not"
注意,不能写成 ls /home/bt || echo "not" && echo "ok"
┌─╼[~]
└╼ ls /home/bt || echo "not" && echo "ok"
ls: 无法访问'/home/bt': 没有那个文件或目录
not
ok
这是因为若目录不存在,返回非零,执行输出”not”,返回0,执行“ok”
所以一般情况下,假设判断式有三个
comm1 && comm2 || comm3
顺序通常不会变