shell脚本常用脚本:if判断

 

str1 = str2      当两个串有相同内容、长度时为真

str1 != str2      当串str1str2不等时为真

-n str1        当串的长度大于0时为真(串非空)

-z str1        当串的长度为0时为真(空串)

str1           当串str1为非空时为真

[ "2006.01.23" \> "2005.03.01" ] && echo dayu || echo budayu

int1 -eq int2    两数相等为真

int1 -ne int2    两数不等为真

int1 -gt int2    int1大于int2为真

int1 -ge int2    int1大于等于int2为真

int1 -lt int2    int1小于int2为真

int1 -le int2    int1小于等于int2为真

-r file     用户可读为真

-w file     用户可写为真

-x file     用户可执行为真

-f file     文件为正规文件为真

-d file     文件为目录为真

-c file     文件为字符特殊文件为真

-b file     文件为块特殊文件为真

-s file     文件大小非0时为真

-t file     当文件描述符(默认为1)指定的设备为终端时为真

-a        

-o       

!        非

 

上面的三种写在括号内,对应的 && || 写在中括号之间。例如,if  [   "$a"  eq   1  -o  "$b" eq 2 ]  &&  [   "$c"  eq  3 ]

 

 

单分支结构

If [条件]

         then

                  指令

fi

 

 

If [条件]; then

         指令

fi

 

提示:分号相当于命令换行,上面两种语法相同,在脚本中一般使用第一种

 

 

脚本实例:

比较大小

[root@centos-b if]# cat if01.sh

#!/bin/bash

#a=12

#b=11

read -p "pls input two number:" a b

if [ $a -gt $b ]

        then

         echo "yes $a > $b"

fi

if [ $a -lt $b ]

        then

         echo "yes $a < $b"

fi

if [ $a -eq $b ]

        then

         echo "yes $a = $b"

fi

 

方法二:

语法:

If [条件]

then

                  指令

else

         指令

fi

 

 

双分支脚本实例:

比较大小

[root@centos-b if]# cat if02.sh

#!/bin/bash

#a=12

#b=11

read -p "pls input two number:" a b

if [ $a -gt $b ]

        then

         echo "yes $a > $b"

else

        if [ $a -lt $b ]

        then

         echo "yes $a < $b"

        else

         echo "yes $a = $b"

        fi

fi

 

 

 

#传参做判断

[root@centos-b if]# ./if04.sh

pls input two number:10

Usage :sh ./if04.sh num1 num2

[root@centos-b if]# ./if04.sh

pls input two number:11 1 1

Usage :sh ./if04.sh num1 num2

[root@centos-b if]# cat if04.sh

#!/bin/bash

#a=12

#b=11

read -p "pls input two number:" a b

if [ $# -ne 2 ]

  then

   echo "Usage :sh $0 num1 num2"

  exit 1

 elif [ $a -gt $b ]

        then

         echo "yes $a > $b"

 elif [ $a -lt $b ]

        then

         echo "yes $a < $b"

else

         echo "yes $a = $b"

fi

多分支结构

 

语法:

If [条件]

then

                  指令

elif [条件]

         then

         指令

elif [条件]

         then

         指令

elif [条件]

         then

         指令

         … …

else

         指令

fi

 

 

多分支脚本实例:

比较大小

[root@centos-b if]# cat if03.sh

#!/bin/bash

#a=12

#b=11

read -p "pls input two number:" a b

if [ $a -gt $b ]

        then

         echo "yes $a > $b"

 elif [ $a -lt $b ]

        then

         echo "yes $a < $b"

else

         echo "yes $a = $b"

fi

 

传参判断方式计算:

[root@centos-b if]# ./if05.sh 15 1f

第二个参数必须为数字

[root@centos-b if]# ./if05.sh 1w 1

第一个参数必须为数字

[root@centos-b if]# cat if05.sh

#!/bin/bash

a=$1

b=$2

 

#read -p "pls input two number:" a b

if [ $# -ne 2 ]

  then

        echo "Usage :sh $0 num1 num2"

        exit 1

fi

[ -n "`echo $1 |sed 's/[0-9]//g'`" ] && echo "第一个参数必须为数字" && exit 1

[ -n "`echo $2 |sed 's/[0-9]//g'`" ] && echo "第二个参数必须为数字" && exit 1

 

 

if [ $a -gt $b ]

        then

         echo "yes $a > $b"

elif [ $a -lt $b ]

        then

         echo "yes $a < $b"

else

         echo "yes $a = $b"

fi