在Bash Shell脚本中使用IF、ELSE和ELSE IF

时间:2019-05-19 01:26:30  来源:igfitidea点击:

IFELSEELIF(在其他编程中称为 ELSE IF)是用于执行不同程序的条件语句,取决于输出的真或假。
所有if语句都以 then关键字开始,以 fi关键字结束。
定义条件有两种方法,一种是使用 test关键字(如:if test < condition >),另一种是使用括号(如:if [condition])。

1。Bash if语句

当我们只有一个程序要执行时,单个if语句非常有用。

if [ condition ]
then
    <code block>
fi

例如,如果我们需要检查输入值是否等于10。
如果value等于10,那么它将打印“i的值是 10”,但如果不是,什么都不会打印。

#!/bin/bash

read -p "输入i的值 :" i

if [ $i -eq 10 ]
then
    echo "i的值是 10"
fi

2。Bash if else语句

如果我们有两个程序要执行,并且只需要根据if条件的结果执行其中一个,那么if else语句就很有用。

if [ condition ]
then
    <code block>
else
    <code block>
fi

例如,如果输入取的值是10,那么它将打印“i的值是 10”,如果不是,程序将执行else块语句并打印“i的值不是10”。

#!/bin/bash

read -p "输入i的值:" i

if [ $i -eq 10 ]
then
    echo "i的值是10"
else
    echo "i的值不是10"
fi

3。Bash if elif语句

如果有两个以上的程序要执行,并且根据if和elif条件的结果只需要执行一个程序,那么if elif和else语句非常有用。

if [ condition ]
then
    <code block>
elif [ condition ]
then
    <code block>
else
    <code block>
fi

例如,下面的例子将检查输入值如果等于5,如果它真的,那么程序将打印我的价值是5,否则程序将去elif语句在一个条件将检查和基于这些结果elif或elase块的代码将被执行。

#!/bin/bash

read -p "请输入i :" i

if [ $i -eq 5 ]
then
    echo "i的值是5"
elif [ $i -eq 10 ]
then
    echo "i的值是10"
else
    echo "i的值不是 5 和 10"
fi

4。Bash elif梯形语句

这与上面一个相似,我们将多个elif语句添加在一起。
当我们有多个程序要执行,并且只需要根据if和elif条件的结果执行一个程序时,elif (else if)梯非常有用。

if [ condition ]
then
    <code block>

elif [ condition ]
then
    <code block>

elif [ condition ]
then
    <code block>

elif [ condition ]
then
    <code block>

else
    <code block>
fi

例如

#!/bin/bash

read -p "请输入i :" i

if [ $i -eq 5 ]
then
    echo "i的值是5"
elif [ $i -eq 10 ]
then
    echo "i的值是10"
elif [ $i -eq 20 ]
then
    echo "i的值是20"
elif [ $i -eq 30 ]
then
    echo "i的值是 30"
else
    echo "i的值不等于5,10,20 或 30"
fi

5。Bash嵌套if语句

嵌套的if在根据外部条件的结果检查一个条件的情况下有用。

if [ condition ]
then
    if [ condition ]
    then
       <code block>
    else
       <code block>
    fi
else
    if [ condition ]
    then
       <code block>
    fi
fi

例如下面的小shell程序是为了寻找用户输入的3个值之间的最大值。
这个程序将只处理数值。
如果两个值相似,则只打印一个值。

#!/bin/bash

read -p "请输入i :" i
read -p "请输入j :" j
read -p "请输入k :" k

if [ $i -gt $j ]
then
    if [ $i -gt $k ]
    then
        echo "i 最大"
    else
        echo "k 最大"
    fi
else
    if [ $j -gt $k ]
    then
        echo "j 最大"
    else
	echo "k 最大"
    fi
fi