Centos7——第二章 Shell脚本应用(二)

        一.本章结构

                        Shell脚本应用(二)

                              条件测试操作  包括文件测试,整数值比较,字符串比较,逻辑测试,

                               使用if条件语句 包括if语句的结构,if语句应用示例

        二.实验过程

                1.文件测试

                 格式:操作符  文件或目录  ]

                        常用的测试操作符(先clear)
                        -d :测试是否为目录( Directory
                        -e :测试目录或文件是否存在( Exist
                        -f :测试是否为文件( File
                        -r :测试当前用户是否有权限读取( Read
                        -w :测试当前用户是否有权限写入( Write
                        -x :测试当前用户是否有权限执行( eXcute

                                [root@localhost ~]# [  -d /etc/ssh  ]

                                [root@localhost ~]# echo $?

                                0

                                [root@localhost ~]# [  -d /etc/hosts  ]    返回0表示条件成立

                                [root@localhost ~]# echo $?

                                1

                                 [root@localhost ~]# [ -e /dev/cdrom ] && echo "YES"   返回已表示条件不成立

                                  YES

                                 [root@localhost ~]# [ -e /dev/usb ] && echo "YES"      逻辑与, "而且"的意思

2.整数值比较

                格式:整数操作符  整数2  ]

常用的测试操作符 ( clear, 假定虚拟机内存为 1024M)
-eq :等于( Equal
-ne :不等于( Not Equal
- gt :大于( Greater Than
- lt :小于( Lesser Than    
       

[root@localhost ~]# who | wc -l

7

[root@localhost ~]# [ $(who | wc -l) -gt 1 ] && echo "Too many."  用户数是否 > 1

Too many.

[root@localhost ~]# [ $(who | wc -l) -ge 2 ] && echo "> = 2."    用户数是否 >=2

[root@localhost ~]# FreeCC=$(free -m | grep "Mem" | awk '{print $4}')

[root@localhost ~]# [ $FreeCC -lt 1024 ] && echo ${FreeCC}MB 空闲内存是否 <1024mb

(864MB)

 3.字符串比较

格式 1 字符串 1  =  字符串 2 ]

                 [  字符串1  !=  字符串2 ]

格式 2 [  -z  字符串 ]
常用的测试操作符 ( clear)
= :字符串内容相同
!= :字符串内容不同, ! 号表示相反的意思   测试当前语音环境
-z :字符串内容为空

                [root@localhost ~]#  read -p "是否覆盖现有文件(yes/no)?"  ACK

                是否覆盖现有文件(yes/no)?yes

                [root@localhost ~]#  [ $ACK = "yes" ] && echo "覆盖"

                覆盖

                [root@localhost ~]# echo $LANG  测试读入的字符串是否为yes

                   zh_CN.UTF-8

                [root@localhost ~]# [ $LANG !=  "en.US" ] && echo  "Not en.US"  测试读入的字符串是否为yes

                Not en.US

4.逻辑测试

                 格式1表达式1  ]  操作符  表达式2  ]  ...

格式 2 命令 操作符  命令 2  ...
常用的测试操作符
-a && :逻辑与,“而且”的意思
-o || :逻辑或,“或者”的意思
! :逻辑否

[root@localhost ~]# echo $USER

root

[root@localhost ~]#  [ $USER != "teacher" ]  &&  echo "Not teacher"  测试当前用户名称

Not teacher

5.if语句的结构 (单分支结构,双分支结构,多分支结构)

        单分支结构:     

                  语法:if条件测试操作

                            then 命令序列

                            fi

                            if磁盘已用空间>80%

                            then

                             fi

                if条件测试操作:

                         条件成立 then  —— 命令序列  ——fi  结束判断

                         条件不成立  ——  fi结束判断

        双分支结构:

                   语法:if条件测试操作      

                                if  条件测试操作

                                then   命令序列1

                                else   命令序列2

                                 fi

                                 if  80端口是否在监听

                                  then   网站服务已在运行

                                  else   启动httpd服务

                                  fi

                  if条件测试操作:

                                 条件成立 then  —— 命令序列 1 —— fi 结束判断

                                 条件不成立else  ——  命令序列 2—— fi结束判断

        多分支结构:      

                        if  条件测试操作1

                        then  命令序列1

                        elif  条件测试操作2

                        then  命令序列2

                        else

                     命令序列3

                        fi

                        分数为85~100之间

                         then   判为优秀

                         elif   分数为70~84之间

           ​​​​​​​        ​​​​​​​      then   判为合格

                         esle

            ​​​​​​​        ​​​​​​​     判为不合格

                         fi

if条件测试操作1 —— 命令序列1 —— fi 结束判断

elif 条件测试操作2 —— then 命令序列2 —— fi 结束判断

elif条件测试操作2 —— else ——命令序列n ——fi结束判断

(1)单分支if语句

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

[root@localhost ~]#  vi chkmountdir.sh

#!/bin/bash

MOUNT_DIR="/media/cdrom/"

if [ ! -d $MOUNT_DIR ]

then

    mkdir -p $MOUNT_DIR   当目录不存在时执行

fi

 

[root@localhost ~]# ls -ld /media/cdrom/

ls: /media/cdrom/: 没有那个文件或目录

[root@localhost ~]# sh chkmountdir.sh

[root@localhost ~]# ls -ld /media/cdrom/

drwxr-xr-x 2 root root 4096 05-05 07:18 /media/cdrom/

(2)双分支if语句

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

[root@localhost ~]# vi  pinghost.sh

#!/bin/bash

ping -c 3 -i 0.2 -W 3 $1 &> /dev/null

if [ $? -eq 0 ]

then

    echo "Host $1 is up."

else

    echo "Host $1 is down."      判断ping命令的检测结果分别给出不同提示

 fi

[root@localhost ~]# sh pinghost.sh www.lzzy.net

Host 192.168.4.11 is up.

[root@localhost ~]# sh pinghost.sh www.aaa.com

Host 192.168.4.13 is down.

 

        (3) 多分支 if 语句
        判断分数范围,分出优秀、合格、不合格三档

[root@localhost ~]# vi gradediv.sh

#!/bin/bash

read -p "请输入您的分数(0-100):" GRADE

if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then

    echo "$GRADE 分!优秀"

elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ; then  判断分数所在区间,给出不同的分档结果

    echo "$GRADE 分,合格"

else

 echo "$GRADE 分?不合格"

fi

[root@localhost ~]# sh gradediv.sh

请输入您的分数(0-100):89

89 分!优秀

以上就是我对 第二章Shell脚本应用 (二)这部分的一些实验和实验结果!

三.总结

shell脚本的实现:

脚本的实现,需要经过一个痛苦的过程,有时候一个看似很简单的shell功能脚本,也许会花费你很大的心思。最好的办法就是做切片,分段调试,分段测试,整体组合。精简代码。调整思路,完善脚本。不要试图一次性编写一个复杂的脚本。除非你对shell和系统服务如火纯青。最后,我初步了解了shell脚本的编写方法,自己对操作系统,和各种功能的实现方法和shell脚本的实现方式,方法还要认真学习和总结。以上是我的一点小小的心得和体会。

                

打 二章 Shell脚本应用(二)

以上本以上应用(eqeqe二)Shell脚本应用(二)第二章 Shell脚本

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏庆隆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值