shell脚本-条件语句

一、测试:

1.test命令:

测试特定的表达式是否成立,当条件成立,测试语句的返回值为0,否则为其他数值 

格式:

test  条件表达式

[  条件表达式  ]

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

属性测试补充:
-s:FILE #是否存在且非空
-t:fd #fd 文件描述符是否在某终端已经打开
-N:FILE #文件自从上一次被读取之后是否被修改过
-O:FILE #当前有效用户是否为文件属主
-G:FILE #当前有效用户是否为文件属组

判断文件是为0,否为1

shell脚本-条件语句_第1张图片

2.比较整数的数值:

通式:

[ 整数1 -操作符 整数2 ] 公式

常见测试操作符:

  • -eq:第一个数等于(Equal)第二个数

  • -ne:第一个数不等于(Not Equal)第二个数

  • -gt:第一个数大于(Greater Than)第二个数

  • -lt:第一个数小于(Lesser Than)第二个数

  • -le:第一个数小于或等于(Lesser or Equal)第二个数

  • -ge:第一个数大于或等于(Greater or Equal)第二个数

shell脚本-条件语句_第2张图片

3.字符串比较:

常用的测试操作符

  • =:字符串内容相同

  • !=:字符串内容不同,! 号表示相反的意思

  • -z:字符串内容为空

  • -n: 字符是否存在

格式

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

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

[ -z 字符串 ] 是否为空

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

案例:

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

shell脚本-条件语句_第3张图片

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

shell脚本-条件语句_第4张图片

[ -z 字符串 ] 是否为空

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

4.逻辑测试(短路运算):

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

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

操作符:

&&或 -a 

逻辑与   而且的意思

第一个要真 第二 个也要真 才能是真

如果第一个为假 ,整个 就为假 不用执行下个操作

cmd1 && cmd2

||  或  -o 

逻辑或   或者的意思

一 真即为真

如果第一个 为真 那么 不用执行第二个

第一个为假 ,才需要执行第二个

cmd1 || cmd2

! 逻辑否

案例:

第一个为真做第一个,为假做第二个

shell脚本-条件语句_第5张图片

shell脚本-条件语句_第6张图片

5.双中括号:

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

案例:

0代表以log结尾,1代表没有以log结尾

shell脚本-条件语句_第7张图片

6.() {} :

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

()会开启子shell

{}不会开启子shell

shell脚本-条件语句_第8张图片

shell脚本-条件语句_第9张图片

二、if语句:

1.单分支结构:

 
格式:
if [ 条件判断式 ]; then
	当条件判断成立时,执行一条或多条命令
fi 	
 
或者
 
if [ 条件判断式 ]
then
执行的命令
fi

shell脚本-条件语句_第10张图片

2.双分支结构:

if [ 条件判断式 ]; then
	当条件判断成立时,可以执行一条或多条命令
else	
	当条件判断不成立时,可以执行一条或多条命令
fi 	

 案例:

shell脚本-条件语句_第11张图片

shell脚本-条件语句_第12张图片

3.多分支结构:

 
if   [ 条件判断式一 ]; then
	当条件判断成立时,可以执行一条或多条命令
elif [ 条件判断式二 ]; then
	当条件判断成立时,可以执行一条或多条命令
elif [ 条件判断式三 ]; then
	当条件判断成立时,可以执行一条或多条命令
......
else	
	当上面的条件判断都不成立时,可以执行一条或多条命令
fi 	

案例: 

判断成绩:

shell脚本-条件语句_第13张图片

shell脚本-条件语句_第14张图片

石头剪刀布:

shell脚本-条件语句_第15张图片

三、case 语句:

格式:

 
格式:
case 变量名称 in
模式1)
	命令序列
    ;;
模式2)
	程序段
	;;
*)
	不包含第一个变量内容与第二个变量内容的其他程序执行段
	默认程序段
	;;
esac

案例:

shell脚本-条件语句_第16张图片

shell脚本-条件语句_第17张图片 

shell脚本-条件语句_第18张图片

 shell脚本-条件语句_第19张图片

你可能感兴趣的:(linux,运维,服务器)