shell脚本第二篇------if..else选择分支结构和case分支结构

分支结构: if...else
 格式1:
           if [ 条件 ]
           then
           语句体
           else
           语句体
           fi
         注意 :条件的两边是空格,
                  多个条件之间要有空格
                  if 后面要有空格
                  条件中如果存在变量, 那么变量的两边要有双引号 
                              例如: name="xiaoming" ---> echo $name N="xiaoming"
                                       在if的条件中取应该是"$name">"$N" 两个变量进行比较 if变量中$的两边一定要有双引号
  格式2:  if语句 和 then 在同一行,中括号和then之间用英文的分号隔开 
          if [ 条件 ];then     # 英文分号
           语句体
          else
           语句体
          fi

             

案例:     判断/root目录是否为空
             查看/root下有没有东西 : ls /root
             字符串之间的判断:  ==  字符串是否相等     
                                              !=  是否不相等   

              脚本内容(正确写法):   
                          
             结果:
             正常结果输出
               
 

 注意点 : 反单引号和空格
               带异常的结果
               

  案例第二种shell写法
              
       结果: 
              

  案例: 通过输入任意目录判断是否为空
            脚本内容: 
            
          结果:
             
 

逻辑运算符: == 是判断字符串是否一样

关系运算符 命令 举例
且/与 -a a == 0 -a b == 0   a为0且b为0
-o a == 2 -o a == 1 a为0或者a为1
!  

案例:
      判断用户输入的用户名和密码是否为
admin 123456,如果是则提示登录成功,否则提示失败
     分析:  两个条件是且的关系
        
      shell 脚本:
                 
     结果:
              结果逻辑有问题????????????????????????????

比较运算符: = 是比较两个数字的大小 注意和 == 区分开

比较运算符 命令 含义和举例
等于 -eq 判断是否相等
不相等 -ne 判断是否不相等
大于 -gt 判断是否大于
大于等于 -ge 判断是否大于等于
小于 -lt 判断是否小于
小于等于 -le 判断是否小于等于

案例: 输入数字,判断是否大于0,如果大于0则将该数字-1并输出,否则+1输出

       变量运算的多种写法
                   i=i+1的五种方式:     

序号 写法
第一种方式 ((i++)) 
第二种方式 ((i+=1)) 
第三种方式  i=$[$i+1] 
第四种方式 let i=i+1
第五种方式 i=$(($i+1))

                                     变量间加减运算: 
                                           s=$(($s+$i))  s=$[$s+$i]  ((s=$s+$i))

       脚本:
               
       结果: 输入2进行了减1
                输入0 进行了加1
                输入-8进行了加1 结果-7
                输入9 进行了减1 结果8
               


知识点:   test命令

test 参数 变量名   #命令作用: 判断文件的状态                       

  -e  表示文件是否存在
  -f   表示文件是否存在且为文件
  -d  表示文件名是否存在且为目录
  -r   可读
  -w  可写
  -x   可执行  

案例: 判断用户输入的目录是否存在如果存在则统计目录下的文件个数否则提示用户该目录不存在    

             脚本: 
                        

                结果:
                        

知识点: 多分支结构 

if [ 条件 ]
then
    语句
elif [ 条件 ]
then
    语句
elif [ 条件 ]
then
    语句
   ...
else
    语句
fi

案例: 判断学生的成绩,大于90-100提示优秀,80-90之间提示良好,70-80之间则提示一般,60-70之间提示及格。其他则提示不及格
      shell脚本:

                 
       结果: 
                
              

知识点:  文件判断命令作为 if的判断条件

文件判断:
-r  -r filename  文件是否存在且可读        # filename是输入的内容,文件目录
-w  -w filename  文件是否存在且可写
-x    -x filename   文件是否存在且可执行
-f  -f filename  文件是否存在且是普通文件
-d  -d filename  文件是否存在且是一个目录
-e    -e filename   文件是否存在
-n    -n str1       字符串长度是否不等于0
-z    -z str2       字符串长度是否等于0

案例: 判断用户输入的内容是否为空,为空则提示,不为空则判断是否为目录,不为目录则判断是否为文件,否则提示错误信息


shell脚本:
           

结果:
          


 

知识点: case分支

格式
    case $变量名 in
    "值")             # 变量和值进行比较 
    语句1;;           # 如果一样执行语句1 ,注意是 ;; 
    "值")             # 上面的判断不满足,  
    语句2;;           # 当第二个比价满足时执行语句2 
    ......

    *)               # 当上面都不满足的时候默认情况
    语句体;;
    esac



注意:
     1# 从上往下只要有一个条件满足,就执行此条件下的语句体, 下面就不再进行判断了
     2# case 第一行最后必须是 in
     3# 语句体结束必须是两个分号 ;;  结束语句的意思
     4# case 的最后 esac 
     5# 值可以是字符串也可以是数字 
     6# 值还可以是区间范围[0-9]

 案例1:     输入一个序号,判断该用户选择哪款产品,A:笔记本 B:电饭煲 C:小台灯
   
 shell脚本:
                
   
 结果:
              

 

案例2:   请输入对客服的满意度,【0-3】不满意,【4-6】满意,【7-9】非常满意
shell脚本:
          

结果:
         

     

总结:

1.shell介绍
    通常所说的shell就是shell脚本,它是一门脚本语言,弱类型
2.shell规范
    第一行内容为#!/bin/bash
    #注释
    是以.sh结尾的文件
3.shell语法
    变量
        定义
        释放变量
        变量值如果有空格,需要加引号
                "" :输出变量对应的值
                '':原样输出
                ``:定义命令变量时需要使用``
        命名规范
        输出变量:echo $变量名
        输入:read 变量名
            read -p "提示信息" 变量名
    向文件传递参数:
        $1--->传递第一个参数
        $2---->....
        $3--->....
        $n---->......
        $0:显示的是文件名称
        $@:显示所有的参数
        $#:显示的参数的个数    重定向:将内容保存到文件中
        正确命令: 用数字1表示, >覆盖,>>追加
        错误命令:用数字2表示,>覆盖,>>追加
程序的结构:
   分支结构:
            if...else分支:
                逻辑运算符:-a -o !
                比较运算符:-ge -gt -lt -le -eq -ne
                测试文件的状态:test 参数 文件名
                字符串判断:== ,!=
                文件判断:-d  -e -f  -w -r -x .....
            if...elif...else分支
            case分支:
                注意:
                    1.case这一行的最后为in
                    2.;;表示语句的结束
                    3. *:表示默认
                    4.esac:表示case语句结束
                    5.值:可以是字符串、数字、还可是区间范围【0-9】之间

发布了106 篇原创文章 · 获赞 11 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/object_oriented_/article/details/88558406