shell编程之判断

Posted 永远不要矫情

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程之判断相关的知识,希望对你有一定的参考价值。

1.if判断结构
if是最简单的判断语句,可以针对测试结果做相应处理。格式如下:

if expression ; then
   command
fi

如果expression测试返回为真,则执行command。如果执行的命令不止一条,则不同命令间用换行符隔开,如下所示:

if expression ; then
   command1
   command2
fi

例如:判断成绩

[root@node1 ~]# cat score.sh 
#!/bin/bash
echo -n "please input a score:"
read SCORE
if [ "$SCORE" -lt 60 ]; then
       echo "C"
fi
if [ "$SCORE" -lt 80 -a "$SCORE" -ge 60 ]; then
       echo "B"
fi
if [ "$SCORE" -ge 80 ]; then
       echo "A"
fi
[root@node1 ~]# sh score.sh 
please input a score:85
A

2.if/else判断结构
if/else语句可以完成两个分支的选择,如果if后的判断成立,则执行then之后的内容;否则执行else后的内容。

if expression ; then
   command
else 
   command
fi

例如:

[root@node1 ~]# cat check_file.sh 
#!/bin/bash
FILE=/var/log/messages
#FILE=/var/log/message1

if [ -e $FILE ]; then
    echo "$FILE exists"
else
    echo "$FILE not exists"
fi
[root@node1 ~]# sh check_file.sh 
/var/log/messages exists
[root@node1 ~]# vi check_file.sh 
[root@node1 ~]# cat check_file.sh 
#!/bin/bash
#FILE=/var/log/messages
FILE=/var/log/message1

if [ -e $FILE ]; then
    echo "$FILE exists"
else
    echo "$FILE not exists"
fi
[root@node1 ~]# sh check_file.sh 
/var/log/message1 not exists

3.if/elif/else判断结构
if语法的多层嵌套:

if expression1 ; then
   command1
else 
    if expression2; then
        command2
    else
        command3
    fi
fi

例如:

[root@node1 ~]# cat score.sh 
#!/bin/bash
echo -n "please input a score:"
read SCORE
if [ "$SCORE" -lt 60 ]; then
       echo "C"
else
    if [ "$SCORE" -lt 80 -a "$SCORE" -ge 60 ]; then
       echo "B"
    else
        if [ "$SCORE" -ge 80 ]; then
              echo "A"
        fi
    fi
fi
[root@node1 ~]# sh score.sh 
please input a score:78
B

4.case判断结构
case判断结构也可以用于多种可能情况下的分支选择。语法结构如下:

case VAR in
 var1)  command1 ;;
 var2)  command2 ;;
 var3)  command3 ;;
  ....
  *)  command ;;
  esac

例如:

[root@node1 ~]# cat os_type.sh 
#!/bin/bash
OS='uname -s'
case "$OS" in
FreeBSD) echo "this is FreeBSD" ;;
Linux ) echo "this is LINUX" ;;
*) echo "Failed to identify this OS" ;;
esac
[root@node1 ~]# sh os_type.sh 
Failed to identify this OS

以上是关于shell编程之判断的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习8之Shell编程--条件判断

Shell编程之if简单判断两个数字大小

Linux之Shell编程(14)

shell编程之文件测试及if多分支语句

Shell编程Shell中的流程控制之if语句

shell编程之if语句