Linux Shell脚本应用

文章详细介绍了在Linux环境中如何使用shell脚本进行文件和目录的测试,包括操作符如[-d]检查目录是否存在,[-e]检查文件或目录是否存在,以及整数和字符串的比较。此外,文章还展示了如何利用这些测试操作符构建单分支、双分支和多分支的if语句,用于自动化执行不同的逻辑操作,例如创建目录、检查主机存活状态和评估成绩等级。
摘要由CSDN通过智能技术生成
  1. 文件测试
    • 格式:操作符  文件或目录  ]

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

[root@localhost ~]# echo $?

0

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

[root@localhost ~]# echo $?

1

[root@localhost ~]# [ -e /dev/cdrom ] && echo "YES"

YES

[root@localhost ~]# [ -e /dev/usb ] && echo "YES"

  1. 整数值比较
    • 格式:[  整数1  操作符  整数2  ]

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

7

[root@localhost ~]# [ $(who | wc -l) -gt 1 ] && echo "Too many."

Too many.

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

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

[root@localhost ~]# [ $FreeCC -lt 1024 ] && echo ${FreeCC}MB

864MB

  1. 字符串比较
    • 格式1:[  字符串1  =  字符串2 ]

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

格式2:[  -z  字符串 ]

常用的测试操作符

[root@localhost ~]# echo $LANG

zh_CN.UTF-8

[root@localhost ~]# [ $LANG !=  "en.US" ] && echo  "Not en.US"

Not en.US

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

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

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

覆盖

[root@localhost ~]# echo $USER

root

[root@localhost ~]#  [ $USER != "teacher" ]  &&  echo "Not teacher"

Not teacher

  1. 单分支if语句
    • 判断挂载点目录,若不存在则自动创建
  2. [root@localhost ~]#  vi chkmountdir.sh
  3. #!/bin/bash
  4. MOUNT_DIR="/media/cdrom/"
  5. if [ ! -d $MOUNT_DIR ]
  6. then
  7.     mkdir -p $MOUNT_DIR
  8. fi
  9. [root@localhost ~]# ls -ld /media/cdrom/
  10. ls: /media/cdrom/: 没有那个文件或目录
  11. [root@localhost ~]# sh chkmountdir.sh
  12. [root@localhost ~]# ls -ld /media/cdrom/
  13. drwxr-xr-x 2 root root 4096 05-05 07:18 /media/cdrom/

  1. 双分支if语句
    • 判断目标主机是否存活,显示检测结果
  2. [root@localhost ~]# vi  pinghost.sh
  3. #!/bin/bash
  4. ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
  5. if [ $? -eq 0 ]
  6. then
  7.     echo "Host $1 is up."
  8. else
  9.     echo "Host $1 is down."
  10. fi
  11. [root@localhost ~]# sh pinghost.sh www.lzzy.net
  12. Host 192.168.4.11 is up.
  13. [root@localhost ~]# sh pinghost.sh www.aaa.com
  14. Host 192.168.4.13 is down.

  1. 多分支if语句
    • 判断分数范围,分出优秀、合格、不合格三档
  2. [root@localhost ~]# vi gradediv.sh
  3. #!/bin/bash
  4. read -p "请输入您的分数(0-100):" GRADE
  5. if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then
  6.     echo "$GRADE 分!优秀"
  7. elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ; then
  8.     echo "$GRADE 分,合格"
  9. else
  10.  echo "$GRADE 分?不合格"
  11. fi
  12. [root@localhost ~]# sh gradediv.sh
  13. 请输入您的分数(0-100):89
  14. 89 分!优秀

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值