shell脚本条件语句

110 阅读2分钟

条件语句

test命令

格式1:test  条件表达式  
格式2:[  条件表达式  ]  
注意[]空格,否则会失败  
测试 是否成功使用 $?  返回值
常见的测试操作符含义
-d测试是否为目录(directory)
-e测试目录或文件是否存在(Exist)
-f测试是否为文件(File)
-r测试当前用户是否有权限读取(Read)
-w测试当前用户是否有权限写入(Write)
-x测试当前用户是否有权限执行(eXcute)
-L测试是否为软连接文件

image.png

image.png

image.png

image.png

image.png

整数数值比较

格式:[ 整数1 操作符 整数2 ]
  • -eq:第一个数等于(Equal)第二个数
  • -ne:第一个数不等于(Not Equal)第二个数
  • -gt:第一个数大于(Greater Than)第二个数
  • -lt:第一个数小于(Lesser Than)第二个数
  • -le:第一个数小于或等于(Lesser or Equal)第二个数
  • -ge:第一个数大于或等于(Greater or Equal)第二个数

image.png

字符串比较

格式:[ 字符串1 操作符 字符串2 ]

[ 字符串1 = 字符串2 ] 是否相同

[ 字符串1 != 字符串2 ] 是否不相同

[ -z 字符串 ] 是否为空

[ -n 字符串 ] 字符是否存在

image.png

逻辑测试

格式1:[ 表达式1 ] 操作符 [ 表达式2 ]
格式2:命令1 操作符 命令2
  • -a或&&:逻辑与,“而且”的意思全真才为真
  • -o或||:逻辑或,“或者”的意思一真即为真
  • !:逻辑否

image.png

括号

双中括号[ [ ] ]

  • == 左侧字符串是否和右侧的PATTERN相同
    注意:此表达式用于[[ ]]中,PATTERN为通配符
  • =~ 左侧字符串是否能够被右侧的正则表达式的PATTERN所匹配
    注意: 此表达式用于[[ ]]中;扩展的正则表达式

image.png

()与{}

(CMD1;CMD2;...)和 {CMD1;CMD2;...; } 都可以将多个命令组合在一起,批量执行

image.png

if语句

格式:
if 条件测试操作
then 命令顺序1
else 命令顺序2
fi 分支语句

小脚本:http

image.png

image.png

小脚本:成绩单

image.png

image.png

case语句

格式:
case 变量值 in
模式1) 命令序列1
;;
模式2)
命令序列2
;;
* 默认命令序列
esac

image.png image.png