鍍金池/ 教程/ Linux/ Shell if else 語句
Shell 特殊變量:Shell $0, $#, $*, $@, $?, $$和命令行參數(shù)
Shell 文件包含
Shell 輸入輸出重定向:Shell Here Document,/dev/null
Shell 函數(shù)參數(shù)
Shell 簡介
Shell printf命令:格式化輸出語句
第一個 Shell 腳本
Shell echo 命令
Shell 運算符:Shell 算數(shù)運算符、關(guān)系運算符、布爾運算符、字符串運算符等
Shell 數(shù)組:shell 數(shù)組的定義、數(shù)組長度
Shell until 循環(huán)
Shell if else 語句
Shell 變量:Shell 變量的定義、刪除變量、只讀變量、變量類型
Shell 字符串
Shell 與編譯型語言的差異
Shell 函數(shù):Shell 函數(shù)返回值、刪除函數(shù)、在終端調(diào)用函數(shù)
Shell 替換
Shell case esac 語句
Shell for 循環(huán)
什么時候使用 Shell
Shell 注釋
幾種常見的 Shell
Shell while 循環(huán)
Shell break 和 continue 命令

Shell if else 語句

if 語句通過關(guān)系運算符判斷表達(dá)式的真假來決定執(zhí)行哪個分支。Shell 有三種 if ... else 語句:

  • if ... fi 語句;
  • if ... else ... fi 語句;
  • if ... elif ... else ... fi 語句。

1) if ... else 語句

if ... else 語句的語法:

if [ expression ]
then
   Statement(s) to be executed if expression is true
fi

如果 expression 返回 true,then 后邊的語句將會被執(zhí)行;如果返回 false,不會執(zhí)行任何語句。

最后必須以 fi 來結(jié)尾閉合 if,fi 就是 if 倒過來拼寫,后面也會遇見。

注意:expression 和方括號([ ])之間必須有空格,否則會有語法錯誤。

舉個例子:

#!/bin/sh

a=10
b=20

if [ $a == $b ]
then
   echo "a is equal to b"
fi

if [ $a != $b ]
then
   echo "a is not equal to b"
fi

運行結(jié)果:

a is not equal to b

2) if ... else ... fi 語句

if ... else ... fi 語句的語法:

if [ expression ]
then
   Statement(s) to be executed if expression is true
else
   Statement(s) to be executed if expression is not true
fi

如果 expression 返回 true,那么 then 后邊的語句將會被執(zhí)行;否則,執(zhí)行 else 后邊的語句。

舉個例子:

#!/bin/sh

a=10
b=20

if [ $a == $b ]
then
   echo "a is equal to b"
else
   echo "a is not equal to b"
fi

執(zhí)行結(jié)果:

a is not equal to b

3) if ... elif ... fi 語句

if ... elif ... fi 語句可以對多個條件進(jìn)行判斷,語法為:

if [ expression 1 ]
then
   Statement(s) to be executed if expression 1 is true
elif [ expression 2 ]
then
   Statement(s) to be executed if expression 2 is true
elif [ expression 3 ]
then
   Statement(s) to be executed if expression 3 is true
else
   Statement(s) to be executed if no expression is true
fi

哪一個 expression 的值為 true,就執(zhí)行哪個 expression 后面的語句;如果都為 false,那么不執(zhí)行任何語句。

舉個例子:

#!/bin/sh

a=10
b=20

if [ $a == $b ]
then
   echo "a is equal to b"
elif [ $a -gt $b ]
then
   echo "a is greater than b"
elif [ $a -lt $b ]
then
   echo "a is less than b"
else
   echo "None of the condition met"
fi

運行結(jié)果:

a is less than b

if ... else 語句也可以寫成一行,以命令的方式來運行,像這樣:

if test $[2*3] -eq $[1+5]; then echo 'The two numbers are equal!'; fi;

if ... else 語句也經(jīng)常與 test 命令結(jié)合使用,如下所示:

num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
    echo 'The two numbers are equal!'
else
    echo 'The two numbers are not equal!'
fi

輸出:

The two numbers are equal!

test 命令用于檢查某個條件是否成立,與方括號([ ])類似。