Shell脚本-----------编程之条件语句-------基础知识汇总

文章目录

  • 一、条件测试
    • 1.1 文件测试与整数测试
      • 1.1.1 test命令
    • 1.2 字符串测试与逻辑测试
  • 二、 if语句
    • 2.1 if单分支语句
    • 2.2 if双分支语句
    • 2.3 if多分支语句
  • 三、case分支语句

一、条件测试

1.1 文件测试与整数测试

1.1.1 test命令

●测试表达式是否成立,若成立返回0,否则返回其他数值
■常用的测试操作符:
Shell脚本-----------编程之条件语句-------基础知识汇总_第1张图片
■常用的测试操作符举例:

[root@localhost ~]# [ -d /dev/disk/ ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -d /dev/disk/server ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -d /dev/disk/ ] && echo "YES"
YES

■整数值比较
【 整数1 操作符 整数2 】
■常用的测试操作符
Shell脚本-----------编程之条件语句-------基础知识汇总_第2张图片
■常用的测试操作符举例:

[root@localhost ~]# who | wc -l
3   ##有3个终端登录##
[root@localhost ~]# [ $(who | wc -l) -gt 2 ] && echo "Too many."
Too many.    ##终端数大于2个,输出成功##
[root@localhost ~]# [ $(who | wc -l) -ge 3 ] && echo ">=3."
>=3.  ####终端数大于等于3个,输出成功##

1.2 字符串测试与逻辑测试

■字符串比较
●格式1:【 字符串1 = 字符串2 】
【 字符串1 != 字符串2 】
●格式2:【 -z 字符串 】
■常用的测试操作符
在这里插入图片描述

[root@localhost ~]# echo $LANG
en_US.UTF-8
[root@localhost ~]# [ $LANG = "en_US" ] && echo "en_US."
[root@localhost ~]# [ $LANG = "en_US.UTF-8" ] && echo "en_US."
en_US.  ##需要精确匹配才能输出正确信息##

■逻辑测试
格式1:【 表达式1 】 操作符 【 表达式2 】 …
格式2:命令1 操作符 命令2 …
■常用的测试操作符
在这里插入图片描述

[root@localhost opt]# [ -d /etc ] && [ -d /home ] && echo "You can open it"
You can open it

二、 if语句

2.1 if单分支语句

■单分支结构
Shell脚本-----------编程之条件语句-------基础知识汇总_第3张图片
■单分支if语句
●判断挂载点目录,若不存在则自动创建

[root@localhost ~]# vi chkmountdir.sh
#!/bin/bash
MOUNT_DIR="/opt/cdrom/"
if [ ! -d $MOUNT_DIR ]
then
  echo "创建$MOUNT_DIR" >>/opt/shell.log
  echo "创建$MOUNT_DIR"
  mkdir -p $MOUNT_DIR
fi
[root@localhost ~]# chmod +x chkmountdir.sh 
[root@localhost ~]# ./chkmountdir.sh 
创建/opt/cdrom/

2.2 if双分支语句

■双分支结构
Shell脚本-----------编程之条件语句-------基础知识汇总_第4张图片
■双分支if语句
●判断目标主机是否存活,显示检测结果

[root@localhost ~]# vi pinghost.sh
#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &>/dev/null
if [ &? = 0 ]
 then
  echo "Host $1 is up."
 else 
  echo "Host $1 is down."
fi
[root@localhost ~]# chmod +x pinghost.sh 
[root@localhost ~]# ./pinghost.sh 20.0.0.2
Host 20.0.0.2 is up.
[root@localhost ~]# ./pinghost.sh 20.0.0.111
Host 20.0.0.111 is down.

2.3 if多分支语句

■多分支结构
Shell脚本-----------编程之条件语句-------基础知识汇总_第5张图片
Shell脚本-----------编程之条件语句-------基础知识汇总_第6张图片
■多分支if语句
●判断分数范围,分出优秀、合格、不合格以及无效分数四档

[root@localhost ~]# vi grade.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 分,合格!"
elif [ $GRADE -ge 0 ] && [ $GRADE -le 69 ]
 then
  echo "$GRADE 分,不合格!"
else
  echo "分数无效,请重新输入!"
fi
[root@localhost ~]# chmod +x grade.sh 
[root@localhost ~]# ./grade.sh 
请输入您的分数(0~100):55
55 分,不合格!
[root@localhost ~]# ./grade.sh 
请输入您的分数(0~100):99
99 分,优秀!
[root@localhost ~]# ./grade.sh 
请输入您的分数(0~100):82
82 分,合格!
[root@localhost ~]# ./grade.sh 
请输入您的分数(0~100):110
分数无效,请重新输入!

三、case分支语句

■case多分支结构
Shell脚本-----------编程之条件语句-------基础知识汇总_第7张图片
Shell脚本-----------编程之条件语句-------基础知识汇总_第8张图片

[root@localhost ~]# vi key.sh
#!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
[a-z]|[A-Z])
  echo "您输入的是字母."
  ;;
[0-9])
  echo "您输入的是数字."
  ;;
*) 
  echo "您输入的是空格、功能键或其他控制字符."
esac
[root@localhost ~]# chmod +x key.sh 
[root@localhost ~]# ./key.sh 
请输入一个字符,并按Enter键确认:a
您输入的是字母.
[root@localhost ~]# ./key.sh 
请输入一个字符,并按Enter键确认:A^H
您输入的是空格、功能键或其他控制字符.
[root@localhost ~]# ./key.sh 
请输入一个字符,并按Enter键确认:9
您输入的是数字.
[root@localhost ~]# ./key.sh 
请输入一个字符,并按Enter键确认:D
您输入的是字母.

你可能感兴趣的:(Shell条件语句,Shell)