shell脚本 条件语句

一、条件语句

1. test测试

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

格式1:test  条件表达式
格式2:[  条件表达式  ]
注意[]空格,否则会失败

操作符:
-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

举例:

2. 比较整数数值

格式:

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

常用操作符:

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

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

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

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

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

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

3. 字符串比较

格式:

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

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

[ -z 字符串 ] 是否为空

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

常用的测试操作符:

=:字符串内容相同

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

-z:字符串内容为空

-n: 字符是否存在

-z:字符串内容为空

-n: 字符是否存在

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

格式:

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

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

常见条件:

-a 或 &&:逻辑与,第一个要真,第二个也要真,才能是真

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

                cmd1 && cmd2

-o 或 ||:逻辑或,如果第一个为真那么就为真

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

!:逻辑否

5. 双中括号

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

6. () {}

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

#( )会开启子shell

#{ }不会开启子shell

二、if语句

1. 单分支结构

if    [  判断条件  ];
then
执行的命令
fi

2. 双分支结构

if [ 条件判断式 ]; then

当条件判断成立时,可以执行一条或多条命令

else

当条件判断不成立时,可以执行一条或多条命令

fi

3. 多分支结构

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

成绩评级: 

石头剪刀布:

三、case语句

case 变量名称 in
PAT1)
    分支1
    ;;
PAT2)
    分支2
    ;;

……
*)
    默认分支
    ;;
esac

不分大小写:        

分数评级

  • 31
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值