linux中的shell编程之条件判断if语句

1、单分支if语句

语法一:

if [ 条件判断式 ];then
    程序
fi

语法二:

if [ 条件判断式子 ]
    then
    程序
fi

实例1:判断登录的用户是否是某个账号

#!/bin/bash
# 判断登录的用户是否是fz

# cut 以某种方式按照文件的行进行分割
# -d自定义分割符,默认为制表符
# -f 与-d一起使用,指定显示哪个区域。
test=$(env | grep "USER" | cut -d "=" -f 2) 

if [ "$test" == fz ]
    then
    echo "Current user is fz."
fi

运行结果为:

实例2:判断分区使用率

#!/bin/bash
# 用来判断sda2这个盘的使用率
# 注意awk命令及cut命令的用法及区别,务必熟练

test=$(df -h | grep sda2 | awk '{print $5}' | cut -d "%" -f 1)

if [ $test -ge 8 ];then
        echo "/ is full"
fi

运行结果如下:

2、双分支if语句

# 双分支if条件语句
if [ 条件判断式 ]
    then
        条件成立时,执行的语句
    else
        条件不成立时,执行另外一段语句
fi

实例1:判断输入的是否是一个目录

#!/bin/bash

read -t 30 -p "Please input a dir: " dir

if [ -d "$dir" ]
    then
        echo "shuru de shi mulu"
    else
        echo "no no no"
fi

运行结果为:

实例2:判断Apache服务是否打开了

#!/bin/bash
# 判断Apache服务是否打开了

# 暂时先不做这个例子,等学linux网络服务时再下载Apache

3、多分支if语句

if [ 条件判断式1 ]
    then
        当条件判断式1成立时,执行程序1
elif [ 条件判断式2 ]
    then
        当条件判断式2成立时,执行程序2
...省略更多条件...
else
        当所有条件都不成立时,最后执行此程序
fi

实例1:写个计算器的程序

#!/bin/bash
# 字符界面加减乘除计算器

read -t 30 -p "Please input num1: " num1
read -t 30 -p "Please input num2: " num2
#通过read命令接收要计算的数值,并赋予变量num1和num2
read -t 30 -p "Please input a operator: " ope
#通过read命令接收要计算的符号,并赋予变量ope

if [ -n "$num1" -a -n "$num2" -a -n "$ope" ]
# 第一层判断,用来判断num1、num2和ope中都有值
    then
        test1=$(echo $num1 | sed 's/[0-9]//g')
        test2=$(echo $num2 | sed 's/[0-9]//g')
        #定义变量test1和test2的值为$(命令)的结果
        #后续命令作用是,把变量test1的值替换为空。如果能替换为空,证明num1的值为数字
        #如果不能替换为空,证明num1的值为非数字。我们使用这种方法判断变量num1的值为数字
        #用同样的方法测试test2变量


        if [ -z "$test1" -a -z "$test2" ]
        #第二层判断,用来判断num1和num2为数值
        #如果变量test1和test2的值为空,则证明num1和num2是数字
            then
            #如果test1和test2是数字,则执行一下命令
                if [ "$ope" == '+' ]
                #第三层判断用来确认运算符
                #测试变量$ope中是什么运算符
                    then
                    sum=$(($num1+$num2))
                    #如果是加号则执行加法运算
                elif [ "$ope" == '-' ]
                    then
                    sum=$(($num1-$num2))
                    #如果是减号,则执行减法运算
                elif [ "$ope" == '*' ]
                    then
                        sum=$(($num1*$num2))
                elif [ "$ope" == '/' ]
                    then
                        sum=$(($num1/$num2))
                else
                    echo "Please enter a valid symbol"
                    #如果运算符不匹配,提示输入有效的符号
                    exit 10
                    #并退出程序,返回错误代码10
                fi
        else
        #如果test1和test2,说明num1和num2不是数值
            echo "Please enter a valid value"
            #则提示输入有效的数值
            exit 11
            #并退出程序,返回错误代码11
        fi
else
        echo "请输入内容!!!"
        exit 12
fi
echo " $num1 $ope $num2: $sum"
#输出数值运算的结果

实例2:判断用户输入的是什么文件

#!/bin/bash

read -t 30 -p "Please input a filename: " file

if [ -z "$file" ]
    then
    echo "请输入内容"
    exit 11

elif [ ! -e "$file" ]
    then
    echo "请输入文件名"
    exit 12
elif [ -f "$file" ]
    then
    echo "$file是一个普通文件"
elif [ -d "$file" ]
    then
    echo "$file是一个目录"
else
    echo "$file是其他类型的文件"
fi

猜你喜欢

转载自blog.csdn.net/qq_40420795/article/details/84885767