Shell脚本之条件语句——条件测试、if语句、case语句

目录

1.条件语句

1.1 test 测试文件的表达式 是否成立

1.2比较整数数值

1.3字符串比较

1.4 逻辑测试

1.5 双中括号

2.if 语句的结构

3. case 语句结构

case 应用

石头剪刀布游戏


1.条件语句

1.1 test 测试文件的表达式 是否成立

格式1:test条件表达式

格式2:[   条件表达式   ]

注意[  ] 空格,否则会失败

测试 是否成功使用 $? 返回值

[操作符 文件或目录]

操作符

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

其中test -a 如果!(取反)会出bug 所以我们通常使用 test -e

在linux 使用判断

test   

[  ]  不支持通配符  正则表达式

[[   ]]  加强版的 单个[] 可以支持正则表达式 和通配符(字符)

1.2比较整数数值

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

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

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

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

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

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

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

实例

1.3字符串比较

常用的测试操作符

  • =:字符串内容相同
  • !=:字符串内容不同,!号表示相反的意思(取反)
  • -z:字符串内容为空
  • -n:字符是否存在

1.4 逻辑测试

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

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

常用的测试操作符

  • -a 或&&:逻辑与,“而且”的意思
  • -o或||:逻辑或,"或者"的意思
  • !:逻辑否

短路与  全真才为真   cmd1  &&  cmd2  都为真才为真  一假即为假

短路或  一真即为真   cmd1  ||  cmd2    全假即为假

ping 小脚本

-c 发送包的个数

-i 发送的间隔时间

-W 超时时间

-w 多少秒后停止ping操作

1.5 双中括号

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

2.if 语句的结构

2.1 分支结构

单分支

if         #判断条件;

then    #条件为真的分支代码

fi    

双分支

if        #判断条件;    then         #条件为真的分支代码

else   #条件为假的分支代码

fi

多分支

if       #判断条件1
then
 #条件1为真的分支代码

elif    #判断条件2
then
 #条件2为真的分支代码

elif     #判断条件3;then
 #条件3为真的分支代码

...
else 

#以上条件都为假的分支代码  托底

fi

单分支 例子(判断主机连通性)

双分支 (判断是否为超级管理员)

多分支(考试成绩)

3. case 语句结构

case 多分支结构

格式

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

注意case 支持glob风格的通配符:

* 任意长度任意字符

?任意单个字符

[0-9] 指定范围内的任意单个字符

丨  或者, 如:a|b

case 应用
石头剪刀布游戏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值