Linux中shell脚本的分支语句、循环语句

1.在学习分支语句之前得先知道test命令语句如下:

     (1)test语句
    test语句可测试三种对象:
              字符串     整数     文件属性
     (2)每种测试对象都有若干测试操作符
    例如:
              test  "$answer"  =  "yes"
              变量answer的值是否为字符串yes
              test  $num –eq  18
              变量num的值是否为整数18
              test  -d  tmp    
              测试tmp是否为一个目录名
     (3) 字符串测试
     s1 = s2     测试两个字符串的内容是否完全一样
     s1 != s2    测试两个字符串的内容是否有差异
     -z s1     测试s1 字符串的长度是否为0
     -n s1     测试s1 字符串的长度是否不为0
     (4) 整数测试
     a -eq b         测试a 与b 是否相等
     a -ne b        测试a 与b 是否不相等
     a -gt b         测试a 是否大于b
     a -ge b         测试a 是否大于等于b
     a -lt b         测试a 是否小于b
     a -le b         测试a 是否小于等于b
     (5) 文件测试
     -d name    测试name 是否为一个目录
     -e name    测试一个文件是否存在
     -f name    测试name 是否为普通文件
     -L name    测试name 是否为符号链接
     -r name    测试name 文件是否存在且为可读
     -w name    测试name 文件是否存在且为可写
     -x name    测试name 文件是否存在且为可执行
     -s name    测试name 文件是否存在且其长度不为0
     f1 -nt f2  测试文件f1 是否比文件f2 更新
     f1 -ot f2  测试文件f1 是否比文件f2 更旧

2.分支语句的命令,不同与c语言和c++的,它没有花括号,案例如下:

        (1)首先创建一个文件,在文件里面编写:

                

        (2)然后执行如下命令查看结果:

                

        (3)elif的用法,就是类似于c语言中的elseif,如下:

                

        (4)编写一个案例来判断用户是否存在,如果存在,打印存在,否则不存在,如下:

                

3.多路分支语句命令

        (1) case…esac 
            多路分支语句case用于多重条件测试, 语法结构清晰自然.  其语法为:
             case   字符串变量   in
                    模式1)
                               命令表1
                            ;;
                    模式2 | 模式3)   
                               命令表2
                            ;;
                     ……
                    模式n)
                               命令表n
                            ;;
            esac
    注:
       * case语句只能检测字符串变量
       * 各模式中可用文件名元字符,以右括号结束
       * 一次可以匹配多个模式用“|”分开
       * 命令表以单独的双分号行结束,退出case语句
       * 模式 n常写为字符* 表示所有其它模式
       * 最后一个双分号行可以省略

        (2)代码的编写如下:

                

        (3)接下来我们来编写一个学生成绩分级管理的小案例,这里的话比较基础就不解释了:

                

                可以加入一个判断出错的语句如下,也可以写成c语言的形式,例如:[] || []

                

                补:

                -o 或

                -a 与

                !非

        4.循环语句

                (1)for循环语法:

                        for   变量名   in   单词表
                  do
                          命令表
                       done

                注:变量依次取单词表中的各个单词,  每取一次单词, 就执行一次循环体中的命令.  循环                  次数由单词表中的单词数确定. 命令表中的命令可以是一条, 也可以是由分号或换行符分                  开的多条

                (2)代码如下:

                

                (2)$*和$@的区别

                $*:"$*"此时是将参数作为一个整体展现出来,"$@"是将多个参数看作个体展现出来,                  如下所示:

                

                (3)while用法

                        while    命令或表达式
                        do
                           命令表
                        done

                (4)实际案例如下:

                

                注:这里的话有两种写法:

                        *while []

                        *while (())与c语言类似

                (5)break和continue的话和c语言类似,用法如下:

                

        5.shell函数

                (1)函数定义:

                function name(){

                statements

                [return value]

                }

                类似c语言去理解

                (2)简单的函数调用实例操作:

                

                (3)$?:获取函数的返回值,如下:

                

                (4)采用命令置换,例如下面:

                

                注:它返回的不是一个返回值1,而是原来函数的echo里面的值

                (5)上面的进阶操作,加上位置变量操作

                

                (6) 如果函数内有变量的情况,在val前加入local,否则默认全局变量:

                

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值