Shell编程之条件语句

条件测试操作

  文件测试

  整数值比较

  字符串比较

  逻辑测试(三元运算符)

if语句

  单分支结构

  双分支结构

 

  多分支结构

case语句结构

 

条件测试操作

 

Shell环境根据命令执行后的反回状态值($?)来判断是否执行成功,当返回值为0(真true)时表示成功,当返回值为非0值(假false)表示失败或异常

test 命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立($?返回值为0表示条件成立)

格式一:test    条件表达式

格式二:[  条件表达式  ]               # 方括号与条件表达式之间需要至少一个空格进行分割

 

文件测试

格式    :   操作符   文件名或者目录 

常用的测试操作符

  • -d∶ 测试是否为目录(Directory)
  • -e∶ 测试目录或文件是否存在(Exist)
  • -f∶ 测试是否为文件(File)
  • -r∶ 测试当前用户是否有权限读取(Read)
  • -w∶ 测试当前用户是否有权限写入(Write)
  • -x∶测试当前用户是否有权限执行(eXcute)
  • -L∶测试是否为软链接文件

整数值比较

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

常用的测试操作符

  • -eq∶ 等于(Equal)
  • -ne∶ 不等于(Not Equal)
  • -gt∶ 大于(Greater Than)
  • -lt∶ 小于(Lesser Than)
  • -le∶ 小于或等于(Lesser or Equal)
  • -ge∶ 大于或等于(Greater or Equal)

字符串比较

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

格式2 :[ -z 字符串 ]

常用的操作符

  • =∶ 字符串内容相同
  • !=∶ 字符串内容不同,!号表示相反的意思
  • z∶字符串内容为空

逻辑测试(三元运算符)

格式1 :[ 表达式1 ] 操作符 [ 表达式2 ]

格式2 :命令1 操作符 命令2

常用的测试操作符

  • -a或&&∶ 逻辑与,"而且"的意思
  • -o或||∶ 逻辑或,"或者"的意思
  • !∶逻辑否
三元 都成立 只取前面的 前面不成立 就取后面的
 
 

if语句

单分支结构

如果只有一个判断式要进行,那么我们可以使用单分支的if语句

格式:

if [ 条件判断式 ]; then
    当条件判断成立时,可以进行的命令工作内容
fi                  

 

Shell编程之条件语句

 

双分支结构

在同一个数据的判断中,如果该数据需要进行两种不同的判断,我们就需要双分支if语句了

格式 :

if [ 条件判断式 ]; then
    当条件判断成立时,可以进行的命令工作内容
else   
    当条件判断不成立时,可以进行的命令工作内容
fi   

 

 Shell编程之条件语句

 

多分支结构

 如果数据需要进行多种不同的判断,则可以使用多分支结构

格式 :

if [ 条件判断式 ]; then
    当条件判断成立时,可以进行的命令工作内容
elif [ 条件判断式二 ]; then
    当条件判断成立时,可以进行的命令工作内容
else   
    当上面的条件判断都不成立时,可以进行的命令工作内容
fi

 

 

Shell编程之条件语句

 

 

 

case语句结构

 格式 :

case 变量名称 in
“第一个变量内容”
    程序段
;;
“第二个变量内容”
    程序段
;;
*)
    不包含第一个变量内容与第二个变量内容的其他程序执行段
    默认程序段
;; esac

 

 

 示例一

#!/bin/bash
#Determine grades and scores
 
read -p "请输入你的分数(0-100):" score
 
[ $score -ge 90 -a $score -le 100 ] && a="great"
[ $score -ge 70 -a $score -le 89 ] && a="medium"
[ $score -ge 60 -a $score -le 69 ] && a="pass"
[ $score -lt 60 ] && a="fail"
 
case $a in
great)
   echo "优秀"
;;
medium)
   echo "中等"
;;
pass)
   echo "及格"
;;
fail)
   echo "不及格"
;;
*)
  echo "输入有误"
esac

 

 示例二

#!/bin/bash
#Determine Input
 
read -p "请输入一个字符:" zifu
 
case "$zifu" in
[a-z]|[A-Z])
    echo "你输入的是字母"
;;
[0-9])
   echo "你输入的是数字"
;;
*)
   echo "你输入的是其他字符"
esac

 

 

 

 

 

 

 

Shell编程之条件语句

上一篇:linux缺少g++


下一篇:ssh本地连接虚拟机linux慢