Shell指令碼學習(3)字串和陣列

2021-10-06 03:57:33 字數 2588 閱讀 2810

字串是shell程式設計中最常用最有用的資料型別(除了數字和字串,也沒啥其它型別好用了),字串可以用單引號,也可以用雙引號,也可以不用引號。單雙引號的區別跟php類似:

單雙引號的區別:

#!/bin/bash

str1='i'

str2='love'

str3='you'

echo $str1 $str2 $str3

echo $str1$str2$str3

echo $str1,$str2,$str3

輸出:

i love you

iloveyou

i,love,you

#!/bin/bash/

str='i love you'

echo $

# 輸出:10

#!/bin/bash/

str='i love you'

echo $ # 從第1個擷取到末尾。注意從0開始。

echo $ # 從第2個擷取2個。

echo $ # 全部擷取。

echo $ # 負數無效,視為0。

輸出:

love you

loi love you

i love you

#!/bin/bash/

str="i love you"

echo `expr index "$str" l`

echo `expr index "$str" love` #最後乙個引數是字元,字串只保留首字母

echo `expr index "$str" o`

echo `expr length "$str"` #字串長度

echo `expr substr "$str" 1 6` #從字串中位置1開始擷取6個字元。索引是從0開始的。

輸出:

334

10i love

注意字串變數需要加雙引號。

string : regexp   anchored pattern match of regexp in string

match string regexp same as string : regexp

substr string pos length #從string中pos位置開始擷取length個字元。pos索引是從1開始的。

index string chars #在string中查詢字元chars首次出現的位置,沒有找到返回0

length string #字串長度

bash支援一維陣列(不支援多維陣列),並且沒有限定陣列的大小。類似與c語言,陣列元素的下標由0開始編號。獲取陣列中的元素要利用下標,下標可以是整數或算術表示式,其值應大於或等於0。

在shell中,用括號來表示陣列,陣列元素用空格符號分割開。定義陣列的一般形式為:

array_name=(value1 value2 ... valuen)
例如:

array_name=(value0 value1 value2 value3)
或者

array_name=(

value0

value1

value2

value3

)

還可以單獨定義陣列的各個分量:

array_name[0]=value0

array_name[1]=value1

array_name[2]=value2

可以不使用連續的下標,而且下標的範圍沒有限制。

下面來讀取陣列:

echo $ #讀取下標為2的元素

echo $ #讀取所有元素

echo $ #讀取所有元素

echo $ #獲取陣列長度

echo $ #獲取陣列長度

echo $ #獲取陣列中單個元素的長度

輸出:

value2

value0 value1 value2 value3

value0 value1 value2 value344

6

對比shell裡字串和陣列,我們發現:

字串

str="hello"

$ # 讀取字串長度

echo $ # 讀取字串全部

echo $ # 擷取字串

陣列:

arr=(a1,a2,a3)

$ # 讀取陣列長度

$ # 讀取陣列某個元素長度

echo $ # 讀取陣列全部

echo $ # 讀取陣列某個元素

$用來讀取ele元素長度屬性

$用來讀取或操作ele元素

3 字串 向量和資料

表示物件的集合,也叫容器,是乙個類模板 include using std vector 迭代器型別 vector int iterator it it能讀寫vector的元素 string iterator it it能讀寫string物件中的元素 vector int const iterato...

shell指令碼學習5 字串和注釋

1 shell注釋 以 開頭的行就是注釋,會被直譯器忽略。sh裡沒有多行注釋,只能每一行加乙個 號。只能像這樣 純文字 複製 這是乙個自動打ipa的指令碼,基於webfrogs的ipa build書寫 特色 全自動打包,不需要輸入任何引數 使用者配置區 開始 專案根目錄,推薦將此指令碼放在專案的根目...

Shell指令碼的學習筆記二 字串

專案功能 單引號原樣輸出,變數無效。但可用成對單引號巢狀成對單引號輸出變數 雙引號定義字串中附帶有變數的命令並且想將其解析後再輸出的變數。1.單引號 bin bash test try to do it.echo i say 1 echo 使用轉義字元會報錯,2 echo i say 3 單引號字串...