shell 条件表达式

 

1、条件测试的常用语法如下

1、test 测试表达式

2、[ 测试表达式 ] #两边需要有空格

3、[[ 测试表达式 ]]

4、(( 测试表达式 ))

说明:

第一种和第二种是等价的,第三种是扩展的test命令,语法4常用于计算

在[[]] 双中括号中可以使用通配符等进行模式匹配,&& ||  >  < 等操作符可以直接应用于双中括号中,但不能用于单中括号中

 

2、test简单实例如下,可以查看man test 获得详细的帮助

[root@backup ~]# test -f /etc/passwd && echo 1 || echo 0
1
[root@backup ~]# test -f /etc/passwd11 && echo 1 || echo 0
0

 

3、[] 但中括号实例

[root@backup ~]# [ -f /etc/passwd ]&& echo 1 || echo 0
1
[root@backup ~]# [ -f /etc/passwd11 ]&& echo 1 || echo 0
0

4、[[]]双中括号实例

[root@backup ~]# [[ 3 > 2 ]]&& echo 1 || echo 0
1
[root@backup ~]# [[ 3 > 4 ]]&& echo 1 || echo 0
0

5、文件测试表达式

 

[root@backup ~]# [ -d /etc/ ]&& echo 1 || echo 0
1
[root@backup ~]#
[root@backup ~]# [ -d /etc/11 ]&& echo 1 || echo 0
0

6、字符串测试表达式

 

[root@backup ~]# [ -n "abc" ]&& echo 1 || echo 0
1

[root@backup ~]# [ -z " " ]&& echo 1 || echo 0
0
[root@backup ~]# [ "ab" = "ab" ]&& echo 1 || echo 0
1
[root@backup ~]# [ "ab" != "ab" ]&& echo 1 || echo 0
0

 观察系统脚本的写法

 

7、整数比较

[root@backup ~]# [ 2 -lt 3 ]&&echo 1||echo 0
1
[root@backup ~]# [ 2 -gt 3 ]&&echo 1||echo 0
0

比较两个整数的大小
[root@backup ~]# cat 1.sh 
#!/bin/bash
#no.1
a=$1
b=$2
[ $# -ne 2 ]&&{
  echo "USAGE:"$0 "num1 num2"
  exit 1
}
#no.2
expr $a + 10  &>/dev/dull
RETVAL1=$?
expr $b + 10 &>/dev/dull
RETVAL2=$?
[ $RETVAL1 -eq 0 -a $RETVAL2 -eq 0 ]||{
  echo "pls input two int nums: "  exit 2
}

#no.3
[ $a -gt $b ] && echo "$a>$b"||{
[ $a -eq $b ] && echo "$a=$b"||echo "$a<$b"

}
[root@backup ~]# sh 1.sh 1 2
1<2
[root@backup ~]# sh 1.sh 3 2
3>2
[root@backup ~]# sh 1.sh 2 2
2=2


改用read方式

[root@backup ~]# cat 1.sh
#!/bin/bash
#no.1
read -p "Pls input two num: " a b
[ -z "$a" ]||[ -z "$b" ]&&{
echo "pls input two num again"
exit 1
}
#no.2
expr $a + 10 &>/dev/dull
RETVAL1=$?
expr $b + 10 &>/dev/dull
RETVAL2=$?
test $RETVAL1 -eq 0 -a $RETVAL2 -eq 0 ||{
echo "pls input two int nums: "
exit 2
}

 
  

#no.3
[ $a -gt $b ] && echo "$a>$b"
[ $a -lt $b ] && echo "$a<$b"
[ $a -eq $b ] && echo "$a=$b"

 
  

[root@backup ~]# sh 1.sh
Pls input two num: 1 1
1=1
[root@backup ~]# sh 1.sh
Pls input two num: 1 2
1<2
[root@backup ~]# sh 1.sh
Pls input two num: 2 1
2>1

 

转载于:https://www.cnblogs.com/hellojackyleon/p/9016259.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值