码迷,mamicode.com
首页 > 系统相关 > 详细

shell 条件表达式

时间:2018-05-09 21:08:14      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:单实例   col   脚本   nbsp   inpu   read   src   ||   com   

 

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

 

shell 条件表达式

标签:单实例   col   脚本   nbsp   inpu   read   src   ||   com   

原文地址:https://www.cnblogs.com/hellojackyleon/p/9016259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!