shell学习笔记(四)

来源:互联网 发布:ios 软件推荐 编辑:程序博客网 时间:2024/05/22 14:22

命令执行的判断依据

  • ; 不考虑指令相关性的连续指令下达
    依次执行,多条命令用 ; 隔开,会执行完一条命令后去执行接下来的一条
  • && 前条指令执行完毕且正确才会执行后条
  • || 前条指令执行完毕且错误才会执行后条
    指令是否正确值依据 $? 变量来确定的,$?=0正确 $? != 0错误
    如果我想要在目录gk下创建文件a(目录不存在就不创建)
┌─╼[~/tsex] └────╼ ls┌─╼[~/tsex] └╼  ls gk && touch gk/als: 无法访问'gk': 没有那个文件或目录┌─╼[~/tsex] └╼  mkdir gk┌─╼[~/tsex] └────╼ ls gk && touch gk/a┌─╼[~/tsex] └────╼ cd gk ┌─╼[~/tsex/gk] └────╼ lsa

如果我想在目录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': 没有那个文件或目录notok

这是因为若目录不存在,返回非零,执行输出”not”,返回0,执行“ok”
所以一般情况下,假设判断式有三个
comm1 && comm2 || comm3
顺序通常不会变

0 0