Shell陣列和流程控制

2021-10-16 03:14:33 字數 2522 閱讀 7762

陣列中可以存放多個值。bash shell 只支援一維陣列(不支援多維陣列),初始化時不需要定義陣列大小(與 php 類似)。

與大部分程式語言類似,陣列元素的下標由0開始。

shell 陣列用括號來表示,元素用"空格"符號分割開,語法格式如下:

array_name=(value1 value2 ... valuen)
例項

#!/bin/bash

my_array=

(a b "c" d)

#讀取陣列

echo

"第乙個元素為: $"

echo

"第二個元素為: $"

echo

"第三個元素為: $"

echo

"第四個元素為: $"

執行指令碼,輸出結果如下所示:

$ chmod +x test.sh

$ ./test.sh

第乙個元素為: a

第二個元素為: b

第三個元素為: c

第四個元素為: d

獲取陣列中的所有元素

使用@ 或 * 可以獲取陣列中的所有元素,例如:

#!/bin/bash

my_array[0]

=amy_array[1]

=bmy_array[2]

=cmy_array[3]

=decho

"陣列的元素為: $"

echo

"陣列的元素為: $"

#執行指令碼,輸出結果如下所示:

$ chmod +x test.sh

$ ./test.sh

陣列的元素為: a b c d

陣列的元素為: a b c d

shell最常見的流程控制有四種:

iffor

case

while

一:if語句

if 語句語法格式:

if condition

then

command1

command2

...commandn

fi

寫成一行(適用於終端命令提示符):

if[$(

ps -ef |

grep -c "ssh"

) -gt 1 ]

;then

echo

"true"

;fi

末尾的fi就是if倒過來拼寫,後面還會遇到類似的。

for 迴圈

與其他程式語言類似,shell支援for迴圈。

for迴圈一般格式為:

for var in item1 item2 ... itemn

do command1

command2

...commandn

done

#寫成一行:

for var in item1 item2 ... itemn;

do command1; command2… done

;

while 語句

while迴圈用於不斷執行一系列命令,也用於從輸入檔案中讀取資料;命令通常為測試條件。其格式為:

while condition

docommand

done

#以下是乙個基本的while迴圈,測試條件是:如果int小於等於5,那麼條件返回真。int從0開始,每次迴圈處理時,int加1。執行上述指令碼,返回數字1到5,然後終止。

#例項#!/bin/bash

int=1

while

(( $int<=5))

doecho

$int

let"int++"

done

#執行指令碼,輸出:12

345

case

shell case語句為多選擇語句。可以用case語句匹配乙個值與乙個模式,如果匹配成功,執行相匹配的命令。case語句格式如下:

case 值 in

模式1)

command1

command2

...commandn

;;模式2)

command1

command2

...commandn

;;esac

case工作方式如上所示。取值後面必須為單詞in,每一模式必須以右括號結束。取值可以為變數或常數。匹配發現取值符合某一模式後,其間所有命令開始執行直至 ;;。

取值將檢測匹配的每乙個模式。一旦模式匹配,則執行完匹配模式相應命令後不再繼續其他模式。如果無一匹配模式,使用星號 * 捕獲該值,再執行後面的命令。

Shell流程控制

case迴圈 if condition condition then statements if true 1 elif condition condition then statements if true 2 else statements if all else fails fi注 方括號中的...

Shell 流程控制

shell的流程控制不可為空,如果else分支沒有語句執行,就不要寫這個else。if 語句語法格式 if condition then command1 command2 commandn fi寫成一行 適用於終端命令提示符 if ps ef grep c ssh gt 1 then echo t...

Shell流程控制

shell 流程控制 if else if語法格式 if condition then command1 command2 fi 末尾的fi就是if倒過來拼寫 if else語法 if condition then command1 command2 else command1 fi if else...