shell编程----if-test


1. if-test

  test是shell内置命令,用来检测某个条件是否成立。test通常和if语句一起使用,并且大部分if语句都依赖test。
  test命令有很多选项,可以进行数值、字符串和文件三个方面的检测。
  shell test 命令的用法为:test expression
  当test判断expression成立时,退出状态为0,否则为非零值。
  test命令也可以简写为[],他的用法为:[ expression ],注意[]和expression之间的空格,这两个空格时必须的,否则会导致语法错误。[]的写法更加简洁,比test使用频率高。
  test命令可以判断3类条件:数值比较,字符串比较,文件比较。

2. test的数值比较

test命令的数值比较功能

比较 描述
n1 -eq n2 检查n1是否与n2相等
n1 -ge n2 检查n1是否大于或等于n2
n1 -gt n2 检查n1是否大于n2
n1 -le n2 检查n1是否小于或等于n2
n1 -lt n2 检查n1是否小于n2
n1 -ne n2 检查n1是否不等于n2
#!/bin/bash
# 数值条件测试可以用在数字和变量上
read val
read val1

if [ $val -eq $val1 ]
then
	echo "The test value $val is equal $val1"
elif [ $val -gt $val1 ]
then
	echo "The test value $val is greater than $val1"
else
	echo "The test value $val is lower than $val1"
fi

结果:
12
33
The test value 12 is lower than 33
33
33
The test value 33 is equal 33

注意:不能在test中使用符点值

3. test的字符串比较

比较 描述
str1 = str2 检查str1是否和str2相同
str1 != str2 检查str1是否和str2不同
str1 < str2 检查str1是否比str2小
str1 > str2 检查str1是否比str2大
-n str1 检查str1的长度是否非0
-z str1 检查str1的长度是否为0

$USER的用法:

[kiosk@foundation60 ~]$ echo $USER
kiosk
#!/bin/bash
# 字符串的相等性
# 比较字符串相等性的时候,test的比较会将所有的标点和大写也考虑在内

luser=root

if [ $USER=$luser ]
then
	echo "登录成功"
else
	echo "登录失败"
fi

结果:
登录成功

# 大于小与符号必须转义
# 否则shell会把他们当作重定向符号,从而把字符串当作文件名

val1=zjy
val2=ljl

if [ $val1 \> $val2 ];then
	echo "$val1 is greater than $val2"
else
	echo "$val1 is less than $val2"
fi

结果:
zjy is greater than ljl

==注意:==字符串的比较遵循字典顺序,规则如下:如果第一个字符串是第二个字符串的前缀,那么第一个小,比如a小于about。从字符串的开头比较,按照字母顺序,a比b小,比如about小于ball。如果第一个字符相同,在比较第二个,比如about小于above。总之,如果你查字典,字典排在前面的单词比后面的单词小。

#!/bin/bash
# 注意:没有被定义的值也会有输出结果
val1=zjy
val2=''

if [ -n $val1 ]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值