linux中shell脚本(2)

目录

1.条件语句

1.1 test 测试

1.2比较整数数值

1.3字符串比较

1.4逻辑测试(短路运算)

2.if语句

2.1单分支

举例:

2.2双分支

举例:

2.3 case

举例:


1.条件语句

1.1 test 测试

test  -e:测试目录或文件是否存在

test  -d:测试是否为目录

test=[   ]

1.2比较整数数值

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

  • -eq:第一个数等于第二个数
  • -ne:第一个数不等于第二个数
  • -gt:第一个数大于第二个数
  • -lt:第一个数小于第二个数
  • -le:第一个数小于或等于第二个数
  • -ge:第一个数大于或等于第二个数

1.3字符串比较

常用的测试操作符

  • =:字符串内容相同

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

  • -z:字符串内容为空

  • -n: 字符是否存在

格式

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

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

[ -z 字符串 ] 是否为空

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

[root@localhost opt]# str1=wang
[root@localhost opt]# str2=zhou
[root@localhost opt]# [ $str1 = $str2 ]
[root@localhost opt]# echo $?             #测试str1内容是否等于str2的内容
1    #不是

[root@localhost opt]# [ $str1 != $str2 ]
[root@localhost opt]# echo $?             #测试str1是否等于str2            
0    #是的

[root@localhost opt]# [ -z $str2 ]
[root@localhost opt]# echo $?         #测试str2内容是否为空
1    #不是

[root@localhost opt]# [ -n $str1 ]    #测试str1是否存在
[root@localhost opt]# echo $?
0    #是的

1.4逻辑测试(短路运算)

&& (短路与):

全真为真

cmd1 && cmd2

一假为假

| | (短路或):

一真即为真

cmd1 | | cmd2

全假为假

组合写法:cmd1 && cmd2 || cmd3(只有这一种组合写法)

2.if语句

2.1单分支

单分支:

if    
判断条件

then   
命令语句

fi
结尾

举例:

#单分支#
#判断是否为超级管理员#
[root@localhost opt]# vim t1.sh

#!/bin/bash
if [ "$USER" != "root" ]
then
        echo "非管理员用户无权限操作"
else
echo "是管理员用户"
fi

[root@localhost opt]# bash t1.sh
是管理员用户

2.2双分支

多分支

if 
判断条件1

then 
命令序列

elif 
判断条件2

then
命令序列

elif 判
判断条件3

then
命令序列

...
else
命令序列

fi

举例:

##多分支##
[root@localhost opt]# vim fs.sh

#!/bin/bash
read -p "请输入你的分数(0-100之间的正整数):" num

if [ $num -ge 90 -a $num -le 100 ]
then
echo "优秀"
elif [ $num -ge 70 -a $num -lt 90 ]
then
echo "良好"
elif [ $num -ge 60 -a $num -lt 70 ]
then
echo "及格"
elif [ $num -lt 60 ]
then
echo "罚抄30遍"
else
echo "输入有误,请输入0-100之间的正整数"
bash $0
fi

[root@localhost opt]# bash fs.sh
请输入你的分数(0-100之间的正整数):90
优秀

2.3 case

case支持glob风格的通配符:
* 任意长度任意字符
? 任意单个字符
[0-9] 指定范围内的任意单个字符

举例:

#石头剪刀布小游戏
[root@localhost opt]# vim bjc.sh
#!/bin/bash
# 1布  2石头  3剪刀

read -p  "请输入 1布 2石头 3剪刀:" human

m=`echo $[RANDOM%3+1]`

if [ $human -eq $m ]
then
echo "人机打平"
elif  [ $human -eq 1 -a $m -eq 2 -o $human -eq 2 -a $m -eq 3 -o $human -eq 3 -a $m -eq 1 ]
then
echo "你赢了"
else
echo "你输了"
fi
                                                                                                                          
[root@localhost opt]# bash bjc.sh
请输入 1布 2石头 3剪刀:3
你赢了
[root@localhost opt]# 
[root@localhost opt]# bash bjc.sh
请输入 1布 2石头 3剪刀:2
人机打平
[root@localhost opt]# bash bjc.sh
请输入 1布 2石头 3剪刀:1
人机打平
[root@localhost opt]# bash bjc.sh
请输入 1布 2石头 3剪刀:3
你输了
[root@localhost opt]# vim score.sh
#!/bin/bash
read -p "请输入你的分数" score

case $score in
100)
echo "$score 你太优秀了"
;;
[89][0-9])    8     9     90-99
echo "$score 表现不错"
;;
[67][0-9])
echo "$score 你及格了"
;;
[0-9]|[1-5][0-9])
echo "$score 你不及格"
;;
*)
echo "输入有误"
esac

[root@localhost opt]# bash score.sh
请输入你的分数50
50 你不及格
[root@localhost opt]# vim score.sh
[root@localhost opt]# bash score.sh
请输入你的分数90
90 表现不错
[root@localhost opt]# bash score.sh
请输入你的分数59 
59 你不及格
[root@localhost opt]# bash score.sh
请输入你的分数69
69 你及格了
[root@localhost opt]# bash score.sh
请输入你的分数100
100 你太优秀了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值