zoukankan      html  css  js  c++  java
  • shell编程学习笔记(八):Shell中if判断的使用

    一、if的语法:

    1、单分支语句结构

    if [ 条件表达式 ]; then
        指令 
    fi

    2、双分支语句结构

    if [ 条件表达式 ]; then 
        指令一 
    else 
        指令二 
    fi

    3、多分支语句结构

    if [ 条件表达式 ]; then
       指令一
    elif [ 条件表达式 ]; then
       指令二
    else
       指令三
    fi

    上面直接给出了多分支if语句的一个实例。从上面三个结构中可以看出,条件表达式的左右都要有空格

    二、条件表达式的内容

    1、字符串的判断

    str1 = str2      当两个串有相同内容、长度时为真 
    str1 != str2      当串str1和str2不等时为真 
    -n str1        当串的长度大于0时为真(串非空) 
    -z str1        当串的长度为0时为真(空串) 
    str1           当串str1为非空时为真

    2、数字的判断

    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为真

    3、文件的判断

    -r file     用户可读为真 
    -w file     用户可写为真 
    -x file     用户可执行为真 
    -f file     文件为正规文件为真 
    -d file     文件为目录为真 
    -c file     文件为字符特殊文件为真 
    -b file     文件为块特殊文件为真 
    -s file     文件大小非0时为真 
    -t file     当文件描述符(默认为1)指定的设备为终端时为真

    4、复杂逻辑判断

    条件表达式中可能有多个条件,需要使用与或非等逻辑操作。

    -a         与 
    -o        或 
    !        非

    三、实例

    if [ $score -ge 0 ]&&[ $score -lt 60 ];then
            echo "sorry,you are lost!"
    elif [ $score -ge 60 ]&&[ $score -lt 85 ];then
            echo "just soso!"
    elif [ $score -le 100 ]&&[ $score -ge 85 ];then
            echo "good job!"
    else
            echo "input score is wrong , the range is [0-100]!"
    fi

    当然,上面的实例也可以用 -a 来改写:

    if [ $score -ge 0 -a $score -lt 60 ];then
            echo "sorry,you are lost!"
    elif [ $score -ge 60 -a $score -lt 85 ];then
            echo "just soso!"
    elif [ $score -le 100 -a $score -ge 85 ];then
            echo "good job!"
    else
            echo "input score is wrong , the range is [0-100]!"
    fi
  • 相关阅读:
    UVA1349 Optimal Bus Route Design 最优巴士路线设计
    POJ3565 Ants 蚂蚁(NEERC 2008)
    UVA1663 Purifying Machine 净化器
    UVa11996 Jewel Magic 魔法珠宝
    NEERC2003 Jurassic Remains 侏罗纪
    UVA11895 Honorary Tickets
    gdb调试coredump(使用篇)
    使用 MegaCLI 检测磁盘状态并更换磁盘
    员工直接坦诚直来直去 真性情
    山东浪潮超越3B4000申泰RM5120-L
  • 原文地址:https://www.cnblogs.com/modou/p/10447949.html
Copyright © 2011-2022 走看看