歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Linux shell “if else” 與 條件判定

Linux shell “if else” 與 條件判定

日期:2017/3/3 12:45:35   编辑:SHELL編程

Abstract:1)"if else"

執行控制;

2)數學邏輯條件比較與字符串比較。

1、" if else "執行控制

Linux Shell 裡面實現“ if else if else

”執行控制如下:

if

條件;

then

執行代碼;

elif

條件;

then

執行代碼;

else

執行代碼;

fi

並且使用 "&&"

表示邏輯條件“與”,使用 "||"表示邏輯條件“或”。

2、條件比較2.1 數學邏輯條件比較

Linux Shell 的數學比較條件必須符合如下格式:

[條件 ]

前後方括號與條件之間都必須有空格符,不然會報錯!

note:多條件判斷出了使用 "&&" "||"

之外,還可以如下表示:

[ $var1 -ne 0 -a $var2 -gt 2 ] # "-a"

等效於"&&"

[ $var -ne 0 -o var2 -gt 2 ] # "-o"

等效於"||"

2.1.1常用數學邏輯條件比較運算符[ $var -eq 0 ] #返回真--如果變量為零

[ $var -ne 0 ] #返回真--如果變量不為零

[ $var -gt 0 ] #返回真--如果變量大於零

[ $var -lt 0 ] #返回真--如果變量小於零

[ $var -ge 0 ] #返回真--如果變量大於等於零

[ $var -le 0 ] #返回真--如果變量小於等於零

example:

#!/bin/bash

echo -e "\e[42;31m --- \"ifelse\" follow control ---\e[0m";
var1=3;
var2=5;
if [ $var1 -eq 3 ] && [ $var2 -eq 7];
then
   echo "var=3 && var2=7";
elif [ $var1 -eq 2 ] || [ $var2 -eq 7 ];
 then
    echo "var1=2";
else
    echo "var1=$var1 ; var2=$var2";
fi
2.1.2常用文件系統的條件判斷

[ -f $var ]#判斷變量值是否為一個合法的文件路徑或文件名

[ -x $var ]#判斷變量值是否為一個可執行文件

[ -d $var ]#判斷變量值是否為一個文件夾路徑

[ -e $var ]#判斷變量值所指的文件是否存在

[ -c $var ]#判斷變量值所指的文件是否為字符設備文件

[ -b $var ]#判斷變量值所指的文件是否為塊設備文件

[ -w $var ]#判斷變量值所指的文件是否可寫

[ -r $var ]#判斷變量值所指的文件是否可讀

[ -L $var ]#判斷變量值所指的文件是否為一個鏈接文件

example:

echo -e "\e[42;31m --- filesystemrelated attribute test ---\e[0m";
fpath="/etc/passwd"
if [ -e $fpath ]; then
echo File exists;
else
echo Does not exist;
fi
2.2 字符串條件比較

Linux Shell 字符串條件比較必須符合如下格式:

[[字符串比較條件 ]]

前後雙方括號與條件之間都必須有空格符,不然會報錯!

[[ $str1 = $str2 ]]#判斷字符串是否相等

[[ $str1 == $str2 ]]#判斷字符串是否相等

[[ $str1 != $str2 ]]#判斷字符串是否不相等

[[ $str1 > $str2 ]]#判斷str1是否字母序上大於str2

[[ $str1 < $str2 ]]#判斷str1是否字母序上小於str2

[[ -z $str1 ]]#判斷str1是否為空字符串

[[ -n $str1 ]]#判斷str1是否不為空字符串

字符串比較同樣支持使用 "&&" "||"

的組合進行多條件聯合判斷。

example:

echo -e "\e[42;31m --- stringcomparison ---\e[0m";
str1="Not empty "
str2=""
if [[ -n $str1 ]] && [[ -z $str2]];
then
echo str1 is non-empty and str2 is emptystring.
fi
2.3 使用 test命令進行條件判斷可以避免使用方括號

test 命令可以替代上面提到的所有方括號表示的條件判斷,並且比較的運算符都是兼容的;使用 man test

命令自行查看 test

命令的使用詳情。

example:

echo -e "\e[42;31m --- using\"test\" command to substitute using square bracket ---\e[0m";
var=1;
if test $var -eq 0;
then
echo "True";
else
echo "False";
fi

Copyright © Linux教程網 All Rights Reserved