shell 条件表达式

Posted 山外云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于shell 条件表达式的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

Shell ❀ 条件测试语句

Shell ❀ 条件测试语句

Shell ❀ 条件测试语句

在shell脚本中进行条件控制以及使用循环

Shell编程-05-Shell中条件测试与比较