shell shell中if語句的使用

2021-09-12 01:52:04 字數 4243 閱讀 5308

bash中如何實現條件判斷?

條件測試型別:

整數測試

字元測試

檔案測試

一、條件測試的表示式:

[ expression ] 括號兩端必須要有空格

[[ expression ]] 括號兩端必須要有空格

test expression

組合測試條件:

-a: and

-o: or

!: 非

二、整數比較:

-eq 測試兩個整數是否相等

-ne 測試兩個整數是否不等

-gt 測試乙個數是否大於另乙個數

-lt 測試乙個數是否小於另乙個數

-ge 大於或等於

-le 小於或等於

命令間的邏輯關係

邏輯與:&&

第乙個條件為假 第二個條件不用在判斷,最總結果已經有

第乙個條件為真,第二個條件必須得判斷

邏輯或:||

三、字串比較

== 等於 兩邊要有空格

!= 不等

**> 大於

< 小於

四、檔案測試

-z string 測試指定字元是否為空,空著真,非空為假

-n string 測試指定字串是否為不空,空為假 非空為真

-e file 測試檔案是否存在

-f file 測試檔案是否為普通檔案

-d file 測試指定路徑是否為目錄

-r file 測試檔案對當前使用者是否可讀

-w file 測試檔案對當前使用者是否可寫

-x file 測試檔案對當前使用者是都可執行

-z 是否為空 為空則為真

-a 是否不空

五、if語法

if 判斷條件 0為真 其他都為假

.單分支if語句

if 判斷條件;then

statement1

statement2

.......

fi

.雙分支的if語句:

複製**

if 判斷條件;then

statement1

statement2

.....

else

statement3

statement4

fi

複製**

note:

if語句進行判斷是否為空

[ "$name」 = "" ]

等同於[ ! "$name" ]

[ -z "$name" ]

note:

使用if語句的時候進行判斷如果是進行數值類的判斷,建議使用let(())進行判斷,對於字串等使用test[ ] or [[ ]] 進行判斷

(())中變數是可以不使用$

來引用的

example:表述數字範圍的時候 可以使用if可以是使用case

if [ $x -gt 90 -o $x -lt 100 ]
case xin

∗∗

100)9[

0−9]

)這個語

句的意思

是如

果x in** 100) 9[0-9]) 這個語句的意思是如果

xin∗∗1

00)9

[0−9

])這個

語句的意

思是如果

name為空,那麼x=x成立折執行下面的結果;

if [ "xnam

e"!=

"x"]

寫指令碼的

時候很多

時候需要

用到回傳

命令

,name" != "x" ] 寫指令碼的時候很多時候需要用到回傳命令,

name"!

="x"

]寫指令碼

的時候很

多時候需

要用到回

傳命令,

if grep -q "rm" fs.sh;then
2、傳回乙個命令執行結果的相反值

if !grep -q "rm" fs.sh;then
3、使用復合命令((算式))

if ((a>b));then
4、使用bash關鍵字 [[判斷式]]

if [[ str > xyz ]];then
5、使用內建命令:test 判斷式

if test "str" \> "xyz";then
6、使用內建命令:[判斷式] 類似test

if [ "str" \> "xyz" ];then
7、使用-a -o進行邏輯組合

[ -r filename -a -x filename ]
8、命令&&命令

if grep -q "rm" fn.sh && [ $a -lt 100 ];then
9、命令||命令

if grep -q "rm" fn.sh || [ $a -lt 100 ];then
示例指令碼(

寫一段指令碼,輸入乙個測驗成績,根據下面的標準,輸出他的評分

成績(a-f)。

a: 90–100

b: 80–89

c: 70–79

d: 60–69

f: <60

)複製**

#/bin/bash

#verson:0.1

#auther:lovelace

#pragram:this pragram is calculation your grade

#import an argument

read -p "please input your grade:" x

declare -i x

#jugemet $x value is none or not

if [ "$x" == "" ];then

echo "you don't input your grade...."

exit 5

fi#jugement the gread level

if [[ "$x" -ge "90" && "$x" -le "100" ]];then

echo "congratulation,your grade is a."

elif [[ "$x" -ge "80" && "$x" -le "89" ]];then

echo "good,your grade is b."

elif [[ "$x" -ge "70" && "$x" -le "79" ]];then

echo "ok.your grade is c."

elif [[ "$x" -ge "60" && "$x" -le "69" ]];then

echo "yeah,your grade is d."

elif [[ "$x" -lt "60" ]];then

echo "right,your grade is f."

else

echo "unknow argument...."

fi

複製**

執行結果:

複製**

[

root@lovelace if]# ./grade.sh

please input your grade:

you don't input your grade....

[root@lovelace if]# ./grade.sh

please input your grade:53

right,your grade is f.

[root@lovelace if]# ./grade.sh

please input your grade:88

good,your grade is b.

複製**

總結:條件判斷在shell語句中經常用到,需要熟練掌握,在此基礎上才能練就一手很好的指令碼編寫能力。祝各位每天都能獲得很大的進步…

shell shell中if語句的使用

bash中如何實現條件判斷?條件測試型別 整數測試 字元測試 檔案測試 一 條件測試的表示式 expression 括號兩端必須要有空格 expression 括號兩端必須要有空格 test expression 組合測試條件 二 整數比較 命令間的邏輯關係 第乙個條件為假 第二個條件不用在判斷,最...

Shell shell中的迴圈語句

for語法格式 for var in list do commands done 其中list可以包含 1 直接寫 for alpha in a b c d do echo alpha done2 變數 list a b c d for alpha in list do echo alpha don...

Shell shell指令碼中的空格

1.定義變數時,號的兩邊不可以留空格.eg gender femal right gender femal wrong gender femal wrong gender test right 左邊是命令的話 號的右邊有空格是正確的 左邊不能有空格 gender test wrong 等號 左邊必須...