zoukankan      html  css  js  c++  java
  • Shell脚本应用(if语句的结构)

    1、测试:检测表达式是否成立,成立则返回值为0,否则为非0

    方法:

    1)test  表达式

    2)【 表达式 】

    2、文件测试:

    -d:是否为目录

    -f:是否为文件

    -e:是否存在

    -r:是否有读取权限

    -w:是否有写入权限

    -x:是否有执行权限

    3、整数值比较:

    -eq:等于

    -ne:不等于

    -gt:大于

    -lt:小于

    -ge:大于等于

    -le:小于等于

    4、字符串比较:

    =:字符串内容相同

    !=:字符串内容不相同

    -z:字符串内容为空

    5、逻辑测试:

    -a或&&:而且,两个条件同时满足才为真,前面的命令执行成功才执行后面的命令

    -o或||:或者,一个条件成立即为真

    !:否,条件不满足时为真

    6、if语句:条件判断语句,成立则执行,否则推出或进行下一个判断,最多执行一次命令

    1)单分支:判断一次,成立执行,不成立退出

    If 【 条件表达式 】

    then

    命令

    fi

    2)双分支:判断一次,成立执行一条命令,不成立执行另一条命令

    If 【 条件表达式 】

    then

    命令1

    Else

    命令2

    fi

    3)多分支:判断多次,依次执行

    If 【 条件表达式 】

    then

    命令1

    elif 【 条件表达式 】

    then

    命令2

    else 【 条件表达式 】

    then

    命令3

    fi

    一、条件测试操作

    1、文件测试

    (1)测试目录/media是否为目录,$?返回值为0,表示存在此目录。

    如果$?返回值非0,表示不存在此目录

     

    (2)测试目录是否存在,输出结果更加直观。

    输出“yes”表示该目录存在

     

    无“yes”输出表示该目录不存在

     

    2、整数值比较

    (1)判断当前已登录的用户数,当超过5个时输出“too many”。

     

    没有出现“too many”说明没有超过5个。

    (2)判断当前可用的空闲内存(buffers/cache)大小,当低于2048MB输出具体数值。

    3、字符串比较

    用户输入“yes”或“no”来确认某个任务

     

    4、逻辑测试

    判断当前linux系统的内核版本是否大于2.4。

    查看内核

     

    判断

    二、if条件语句

    1、单分支if语句

    (1)判断挂载点目录,若不存在则自动创建

    步骤:首先创建脚本vim  chkmountdir.sh 编辑脚本,赋予x权限并执行(详细脚本如下图)

    执行并查看

     

    (2)判断当前用户是否为root,如果不是则报错并执行“exit  1”退出脚本,不再执行其他代码。

    步骤:编辑一个脚本 vim /opt/chkifroot.sh并切换用户验证

    创建并切换用户验证

     

    2、双分支if语句

    (1)判断目标主机是否存活,显示检测结果

    步骤:创建脚本 vim pinghost.sh 

    赋予x权限并验证,注:本机地址是192.168.1.10

     

    (2)检查vsftpd服务是否运行,若运行则列出监听地址,PID号;否则输出提示“警告,vsftpd服务不可用1”。(插入linux系统安装光盘,安装一下vsftpd软件包)。

    启动vsftpd服务(service  vsftpd start),运行一下脚本,查看结果。

    停止vsftpd服务(service  vsftpd  stop),运行一下脚本,查看结果。

    步骤:编写脚本 vim chkftpd.sh 并且要安装vsftpd服务

    赋予x权限并验证

     

    3、多分支if语句

    (1)根据输入的考试分数不同来区分优秀,合格,不合格三挡。

    步骤:编写脚本 vim gradediv.sh

    赋予x权限并执行

    文章参考微信公众号:L宝宝聊IT

  • 相关阅读:
    ElasticSearch搜索
    Muddery框架
    https和http的区别
    multiprocessing模块创建进程
    进程理论基础
    单例模式
    原型模式
    建造者模式
    StrutsTypeConverter的使用
    UML用例图之泛化(generalization)、扩展(extend)和包含(include)关系--UML一波流系列讲解
  • 原文地址:https://www.cnblogs.com/L2366/p/9190402.html
Copyright © 2011-2022 走看看