Shell笔记(3)- Shell脚本的条件测试与比较(不是IF条件语句)

3 Shell脚本的条件测试与比较


3.1 Shell脚本的条件测试

3.1.1 条件测试方法

条件测试:bash的条件结构和流程控制结构中进行的各种测试,根据测试结果执行不同的操作。执行条件测试表达式后通常返回“真”或“假”,就像执行命令后的返回值为0表真,非0位假。

3.1.2 常见的语法形式

  • test <测试表达式>
  • [ <测试表达式> ]  同test等价,下面我们只使用该语法格式;
  • [[ <测试表达式> ]]
  • ((<测试表达式>))

3.1.3 [](中括号)条件测试语句

  •   []条件测试的语法格式为:[ <测试表达式> ]
  •   测试语句[ -f /home/auv/test.txt ]  && echo 1 || echo 0
  •   如果/home/auv/test.txt文件存在,则输出1,否则输出0.此处 &&表示与,||表示或。

3.2 文件测试表达式

在编程时需要处理一个对象,首先应对其进行测试,只有确定它符合要求才进行下一步,测试对象可以是文件、字符串、数字等。

3.2.1 常用文件测试操作符

  • -d  directory   文件存在且为目录则为真
  • -f   file     文件存在且为普通文件则为真
  • -e  exist    文件存在则为真(不辨别目录还是文件)
  • -r   read    文件存在且可读则为真
  • -s  size     文件存在且大小不为0则为真
  • -w  write    文件存在且可写则为真
  • -x  executable  文件存在且可执行则为真
  • -L  link    文件存在且为链接文件则为真
  • f1 -nt f2  newer than  文件f1比文件f2新则为真
  • f1 -ot f2  older than  文件f1比文件f2旧则为真
  • 测试语句1[ -f /home/auv/test.txt ] && echo 1 || echo 0
  • 测试语句2[ /home/auv/f1.txt -nt /home/auv/f2.txt ] && echo 1 || echo 0

3.3 字符串测试表达式

字符串测试操作符的作用包括:比较两个字符串是否相同、测试字符串长度是否为0、字符串是否为NULL等

3.3.1 常用字符串测试操作符

  • -n "字符串"  字符创长度非0,则为真
  • -z "字符串"  字符串长度为0,则为真
  • "串1" = "串2"  若字符串1等于串2,则为真
  • "串1" != "串2"  若字符串1不等于串2,则为真
  • 测试语句[ -n "abc" ] && echo 1 || echo 0
  • 测试语句[ "abc" = "abd" ] && echo 1 || echo 0

3.4 整数二元比较操作符

  • -eq  equal  相等  =
  • -ne  not equal    不相等  !=
  • -gt  greater than   大于      >
  • -ge  greater equal  大于等于  >=
  • -lt  less than     小于       <
  • -le  less equal    小于等于   <=
  • 测试语句:[ 2 -gt 1 ] && echo 1 || echo 0

3.5 逻辑操作符

-a  and  &&

-o  or     ||

!    not  !

测试语句:[ -f /etc/hosts -a /etc/services ] && echo 1 || echo 0

2018-06-22 07:48:10 雷小贱

猜你喜欢

转载自www.cnblogs.com/QQ827882747/p/9211697.html