shell運算子與流程控制 2

2022-04-10 09:42:55 字數 4360 閱讀 1870

1、shell運算子

1.1、算數運算子

原生的bash不支援算數運算,可以通過其它方式實現例如expr。

1 `expr a +b`

2#a b為數字,和運算子之間要有空格

3 #``不是單引號,為鍵盤上esc鍵下方的反引號

示例如下:

1 #!/bin/sh

23 a=4

4 b=3

5#加法

6 val=`expr $ +$`

7echo

"$ + $ is :$"8

9#減法

10 val=`expr $ -$`

11echo

"$ - $ is :$"12

13#乘法

14 val=`expr $ \*$`

15echo

"$ * $ is :$"16

17#除法

18 val=`expr $ /$`

19echo

"$ / $ is :$"20

21#取餘

22 val=`expr $ %$`

23echo

"$ % $ is :$

"

view code

輸出:

4 + 3 is :7

4 - 3 is :1

4 * 3 is :12

4 / 3 is :1

4 % 3 is :1

1.2、關係運算子

關係運算子只支援數字,常見的關係運算子如下:

1 c=3

2 d=3

3#等於

4if [ $ -eq $ ]

5then

6echo

"$ is equal to $"7

fi8#不等於

9 d=2

10if [ $ -gt $ ]

11then

12echo

"$ is great than $"13

fi# -eq 等於,[ $ -ne $ ]返回true

# -gt 檢測左邊數是否大於右邊,如果是,則返回true,反之,返回false

# -lt 檢測左邊數是否小於右邊,如果是,則返回true,反之,返回false

# -ge 檢測左邊數是否大於等於右邊,如果是,則返回true,反之,返回false

# -le 檢測左邊數是否小於等於右邊,如果是,則返回true,反之,返回false

輸出如下:

3 is equal to 3

3 is great than 2

1.3、布林運算子

1

#非運算!,表示式為true,則返回false

2#與運算-o,有乙個表示式為true則返回true

3 #或運算-a,兩個表示式為true則返回true

1 c=1

2 d=2

3 e=3

4if [ $ -ne $ -o $ -eq $ ]

5then

6echo

"$ 不等於 $ 或者 $ 等於 $ ,返回true。"7

fi

輸出如下:

1 不等於 2 或者 2 等於 3 ,返回true。
1.4、邏輯運算子

1 #&&邏輯and

2 #|| 邏輯or

1 c=1

2 d=2

3 e=3

4if [ $ -ne $ and $ -eq $ ]

5then

6echo

"$ 不等於 $ 並且 $ 等於 $ ,返回true。"7

else

8echo

"$ 不等於 $ 或者 $ 等於 $ ,返回true。"9

fi

1 不等於 2 或者 2 等於 3 ,返回true。
1.5、字串運算子

1 #  =,檢測兩個字串是否相等,相等則返回true

# !=,檢測兩個字串是否不等,不等則返回true

# -z,檢測字串是否為零,為零返回true

# -n,檢測字串是否不為零,為零返回false

# $ ,檢測字串是否為空,不為空返回true

示例如下:

1 a="

hello

"2 b="

hello"3

if [ $ =$ ]

4then

5echo

"str $ is equal to $"6

fi78if [ -n $ ]

9then

10echo

"str $ is not zero.

"

輸出如下:

str hello is equal  to  hello

str hello is not zero.

1.6、檔案檢測運算子

1 #-w $ 檢測檔案是否可寫,可寫則返回true

2 #-r $ 檢測檔案是否可讀,可寫則返回true

3 #-x $ 檢測檔案是否可執行,可執行則返回true

4 #-s $ 檢測檔案是否為空,不為空則返回true

5 #-e $ 檢測檔案或目錄是否存在,存在則返回true

6 #檔案檢測運算子比較多,此時不一一枚舉

curr_path=`pwd`

if [ -e $ ]

then

echo "dir $ is exist."

fi

輸出如下:

dir /home/stephen/桌面 is exist.
2、shell流程控制

2.1、if

#!/bin/bash

#假如 條件1成立,則執行語句1

#假如 條件1不成立,條件2成立,則執行語句2

#假如 條件1,2不成立,則執行語句3

if條件1

then

語句1elif

條件2then

語句2else

語句3

示例如下:

1 age=15

2if [ $ -lt 16]3

then

4echo

"age is $, yonng"5

elif [ $ 40]6

then

7echo

"age is $,midlife"8

else

9echo

"age is $,old"10

fi

輸出如下:

age is 15, yonng
2.2、for迴圈

1 data_path=(data1 data2 data3)

2for datai in$3

do4echo$5

done

輸出:

data1

data2

data3

1

for ((i=0;i<5;i++))2do

3echo$4

done

輸出:

012

34

2.3、while

#當條件1成立,迴圈執行語句1

while

條件1do

語句1done

示例如下:

1 i=1

2while [ $ -lt 4]3

do4echo

"loop $

"5 #語法 let "

表示式"

6 let i++

7 done

輸出如下:

loop 1

loop

2loop

3

2.4、until

#當條件1不成立時,就執行語句1

until

條件1do

語句1done

示例如下:

1 j=7

2until [ $ -lt 4]3

do4echo

"loop $

"5 let j--

6done

輸出如下:

loop 7

loop

6loop

5loop

4

陣列運算子 錯誤控制運算子與流程控制

注意 php中陣列元素的順序與下標無關,而是與加入的順序有關 v1 array 1,2,3,4 v2 array 5,6,7,8,9 r1 v1 v2 則 r1的結果為 array 1,2,3,4,9 v1 array 1,2,3,4 v2 array 2,3,1,4 v3 array 1 2,2 ...

python 運算子與流程控制

算術運算 復合運算 關係運算 比較運算 邏輯運算 判斷是否在100 200之間 print a 100 and a 200 與上式等價 print 100 a 200 判斷是否是閏年 y int input 請輸入乙個年份 print y 4 0 and y 100 0 or y 400 0 成員運...

python 運算子與流程控制

算術運算 復合運算 關係運算 比較運算 邏輯運算 判斷是否在100 200之間 print a 100 and a 200 與上式等價 print 100 a 200 判斷是否是閏年 y int input 請輸入乙個年份 print y 4 0 and y 100 0 or y 400 0 成員運...