單引號str='this is a string'
單引號:
· 任何字元都會原樣輸出,單引號字串中的變數是無效的;
· 不能出現單引號**義字元也無效)。
雙引號your_name='qinjx'
str="hello, i know your are \"$your_name\"! \n"
雙引號:
· 雙引號裡可以有變數
· 雙引號裡可以出現轉義字元
拼接字串
world="world"
greeting="hello, "$" !"(方法一:無空格連續拼接)
greeting_1="hello, $ !"(方法二:嵌入是拼接)
echo $greeting $greeting_1
獲取字串長度
string="world"
echo $ #輸出 5
提取子字串
以下例項從字串第 2 個字元開始擷取 4 個字元:
string="hello world!"
echo $ # 輸出 ello
注意角標是從0開始
查詢子字串
查詢字元 is 的位置:
string="world is so beautiful!"
echo `expr index "$string" is` # 輸出 7
注意: 以上指令碼中 "`" 是反引號,而不是單引號 "'",不要看錯了哦。 expr 是表示式標識
bash支援一維陣列(不支援多維陣列),並且沒有限定陣列的大小。
類似與c語言,陣列元素的下標由0開始編號。獲取陣列中的元素要利用下標,下標可以是整數或算術表示式,其值應大於或等於0。
定義陣列
在shell中,用括號來表示陣列,陣列元素用"空格"符號分割開。定義陣列的一般形式為:
陣列名=(值1 值2 ... 值n)
例如:array_name=(value0 value1 value2 value3)
或者array_name=(
value0
value1
value2
value3
)還可以單獨定義陣列的各個分量:
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
可以不使用連續的下標,而且下標的範圍沒有限制。
讀取陣列
讀取陣列元素值的一般格式是:
$例如:
valuen=$
使用@符號可以獲取陣列中的所有元素,例如:
echo $
獲取陣列的長度
獲取陣列長度的方法與獲取字串長度的方法相同,例如:
# 取得陣列元素的個數
length=$
# 或者
length=$
# 取得陣列單個元素的長度
lengthn=$
以"#"開頭的行就是注釋,會被直譯器忽略。
sh裡沒有多行注釋,只能每一行加乙個#號。只能像這樣:
#--------------------------------------------
# this is a annotiation
# you can write everything here,
# it can』t be excuted
##### you can user not only one 『#』 #####
如果在開發過程中,遇到大段的**需要臨時注釋起來,過一會兒又取消注釋,怎麼辦呢?每一行加個#符號太費力了,可以把這一段要注釋的**用一對花括號括起來,定義成乙個函式,沒有地方呼叫這個函式,這塊**就不會執行,達到了和注釋一樣的效果。
2 字串查詢
kmp演算法 kmp演算法的關鍵是利用匹配失敗後的資訊,儘量減少模式串與主串的匹配次數以達到快速匹配的目的。具體實現就是實現乙個next 函式,函式本身包含了模式串的區域性匹配資訊。時間複雜度o m n 通過getnext 實現部分匹配值,然後利用kmp演算法計算是否匹配。如下 package li...
2 字串插入
描述 有兩個字串str和substr,str的字元個數不超過10,substr的字元個數為3。字元個數不包括字串結尾處的 0 將substr插入到str中ascii碼最大的那個字元後面,若有多個最大則只考慮第乙個。輸入 輸入包括若干行,每一行為一組測試資料,格式為 str substr 輸出 對於每...
Shell指令碼學習(3)字串和陣列
字串是shell程式設計中最常用最有用的資料型別 除了數字和字串,也沒啥其它型別好用了 字串可以用單引號,也可以用雙引號,也可以不用引號。單雙引號的區別跟php類似 單雙引號的區別 bin bash str1 i str2 love str3 you echo str1 str2 str3 echo...