Linux云计算 |【第二阶段】SHELL-DAY2

主要内容:

条件测试(字符串比较、整数比较、文件状态)、IF选择结构(单分支、双分支、多分支)、For循环结构、While循环结构

一、表达式比较评估

test 命令是 Unix 和 Linux 系统中用于评估条件表达式的命令。它通常用于 shell 脚本中,以根据条件执行不同的操作。test 命令可以检查文件类型、比较字符串和整数,以及执行逻辑操作。

可以为Shell脚本实现智能化判断的结果,为命令的执行提供最直接的识别依据;针对文件或目录的读/写等状态、数值的大小、字符串是否匹配、多条件组合;

  • 格式:test expression
  • 格式:[ expression ]

或者使用方括号 [ ](注意方括号与表达式之间要有空格)

注意:条件测试操作本身不显示出任何信息。测试的条件是否成立主要体现在命令执行后的返回状态(即 $?),所以可以在测试后查看变量$?的值来做出判断,或者结合&&、||等逻辑操作显示出结果(或作其他操作)

文件测试

  • -e file:检查文件是否存在。
  • -f file:检查文件是否存在且为普通文件。
  • -d file:检查文件是否存在且为目录。
  • -r file:检查文件是否存在且可读。
  • -w file:检查文件是否存在且可写。
  • -x file:检查文件是否存在且可执行。
  • -s file:检查文件是否存在且大小大于0。

字符串比较

  • str1 = str2:检查字符串是否相等。
  • str1 != str2:检查字符串是否不相等。
  • -z str:检查字符串是否为空。
  • -n str:检查字符串是否非空。

整数比较

  • int1 -eq int2:检查整数是否相等。
  • int1 -ne int2:检查整数是否不相等。
  • int1 -lt int2:检查整数是否小于。
  • int1 -le int2:检查整数是否小于等于。
  • int1 -gt int2:检查整数是否大于。
  • int1 -ge int2:检查整数是否大于等于。

逻辑操作

  • ! expression:逻辑非。
  • expression1 -a expression2:逻辑与(AND)。
  • expression1 -o expression2:逻辑或(OR)。

二、常用表达式

1、字符串比较测试

格式:[ 操作符 字符串 ]      //查看变量的值是否为空

  • -z str:检查字符串是否为空
  • -n str:检查字符串是否非空

注意:格式必须要有空格 

例如:

[root@svr7 ~]# a=100
[root@svr7 ~]# [ -z $a ]     //判断变量a为空
[root@svr7 ~]# echo $?
1
可以简化为如下形式:
[root@svr7 ~]# a=100;[ -z $a ];echo $?    //利用【;】号可隔开表达式
1
 
[root@svr7 ~]# [ ! -z $a ]    //判断变量a不为空
[root@svr7 ~]# echo $?
0
[root@svr7 ~]# [ -n $a ]     //判断变量a不为空
[root@svr7 ~]# echo $?
0

 例如:

[root@svr5 ~]# var1="nb" ; var2=""
[root@svr5 ~]# [ -z "$var1" ] && echo "空值" || echo "非空值"    //-z查看字符串值为空
非空值
[root@svr5 ~]# [ -z $var2 ] && echo "空值" || echo "非空值"
空值               //变量var2已设置,但无任何值,视为空

常见报错:【! -z】在!与 -z间需要加空格

[root@svr7 ~]# [ !-z $a ]
-bash: !-z: event not found

格式:[ 字符串1 操作符 字符串2 ]    //查看变量的值是否相同

  • str1 == str2:检查字符串是否相等
  • str1 != str2:检查字符串是否不相等

注意:格式必须要有空格

例如:

[root@svr7 ~]# [ abc == abc ]     //字符串的值测试是否相同(常量)
[root@svr7 ~]# echo $?     //判断上条命令是否正确(0正确,非0错误)
0
[root@svr7 ~]# [ “root” == $USER ]     //当前用户是否与root相同(变量)
[root@svr7 ~]# echo $?
0
[root@svr7 ~]# [ “root” != $USER ]    //当前用户是否与root不同
[root@svr7 ~]# echo $?
1

常见报错:输入格式错误,未有空格

[root@svr7 ~]# [abc == abc]
bash: [abc: 未找到命令...

2、整数值比较测试

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

  • int1 -eq int2:检查整数是否相等
  • int1 -ne int2:检查整数是否不相等
  • int1 -lt int2:检查整数是否小于
  • int1 -le int2:检查整数是否小于等于
  • int1 -gt int2:检查整数是否大于
  • int1 -ge int2:检查整数是否大于等于

例如:

[root@svr7 opt]# a=10
[root@svr7 opt]# [ $a -eq 9 ];echo $?    //测试10等于9,报错
1
[root@svr7 opt]# [ $a -eq 10 ];echo $?   //测试10等于10
0
[root@svr7 opt]# [ $a -ne 9 ];echo $?     //测试10不等于9
0
[root@svr7 opt]# [ $a -ge 7 ];echo $?      //测试10大于或等于7
0
[root@svr7 opt]# [ $a -le 7 ];echo $?     //测试10小于或等于7
1
[root@svr7 opt]# [ $a -gt 4 ];echo $?    //测试10大于4
0
[root@svr7 opt]# [ $a -lt 4 ];echo $?    //测试10小于4
1

例如:

[root@svr5 ~]# X=20    //定义一个测试变量
[root@svr5 ~]# [ $X -eq 20 ] && echo "相等" || echo "不相等"
相等
[root@svr5 ~]# [ $X -eq 30 ] && echo "相等" || echo "不相等"
不相等

[root@svr5 ~]# [ $X -gt 10 ] && echo "大于" || echo "否"
大于
[root@svr5 ~]# [ $X -gt 20 ] && echo "大于" || echo "否"
否
[root@svr5 ~]# [ $X -gt 30 ] && echo "大于" || echo "否"
否

[root@svr5 ~]# [ $X -ge 10 ] && echo "大于或等于" || echo "否"
大于或等于
[root@svr5 ~]# [ $X -ge 20 ] && echo "大于或等于" || echo "否"
大于或等于
[root@svr5 ~]# [ $X -ge 30 ] && echo "大于或等于" || echo "否"
否

例如:提取当前登录的用户数,比较是否大于等于3


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小安运维日记

Hey~ 感谢您的充电支持!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值