linux?shell編程指南之字符串與數(shù)組
前言
對字符串的操作在眾多的編程語言中可以說是最基礎(chǔ)的了,字符串(String)就是一系列字符的組合。字符串是 Shell 編程中最常用的數(shù)據(jù)類型之一(除了數(shù)字和字符串,也沒有其他類型了)。
一、shell 中字符串的幾種格式
在shell中,字符串主要有下面幾類寫法:
- 單引號方式
- 雙引號方式, 推薦
- 不用引號方式
三種寫法的區(qū)別
1、使用單引號 ''
的字符串:
任何字符都會原樣輸出,在其中使用變量是無效的。
2、由雙引號" "
包圍的字符串:
1)其中包含了變量,那么該變量會被解析得到值,而不是原樣輸出;
2)字符串中還可以出現(xiàn)雙引號的子字符串,但是需要轉(zhuǎn)義;
3、不被引號包圍的字符串
1)不被引號包圍的字符串中出現(xiàn)變量時也會被解析,這一點和雙引號
" "
包圍的字符串一樣;2)字符串中不能出現(xiàn)空格,否則空格后邊的字符串會作為其他變量或者命令解析;
二、字符串常用操作
1、獲取字符串長度
${#字符串變量名}
2、字符串拼接
幾種常用的拼接方式:
- 無符號拼接
- 雙引號拼接
- 混合拼接
無符號拼接
雙引號拼接
混合拼接
3、字符串截取
字符串截取操作在眾多的編程語言中可以說是非常常見的一種操作了,尤其是在python語言中,使用非常高頻,而在shell中,也提供了畢竟豐富的字符串截取的操作;
格式 | 說明 |
---|---|
${變量名:start:length} | 從 string 字符串的左邊第 start 個字符開始, 向右截取 length 個字符。 |
${變量名:start} | 從 string 字符串的左邊第 start 個字符開始截取,直到最后。 |
${變量名:0-start:length} | 從 string 字符串的右邊第 start 個字符開始, 向右截取 length 個字符。 |
${變量名:0-start} | 從 string 字符串的右邊第 start 個字符開始截取,直到最后。 |
${變量名#*chars} | 從 string 字符串第一次出現(xiàn) *chars 的位置開始, 截取 *chars 右邊的所有字符。 |
${變量名##*chars} | 從 string 字符串最后一次出現(xiàn) *chars 的位置開始, 截取 *chars 右邊的所有字符。 |
${變量名%chars*} | 從 string 字符串最后第一次出現(xiàn) chars* 的位置開始, 截取 chars* 左邊的所有字符。 |
${變量名%%chars*} | 從 string 字符串第一次出現(xiàn) chars* 的位置開始, 截取 chars* 左邊的所有字符 |
下面隨機演示幾個截取的操作命令
三、數(shù)組
Shell 支持?jǐn)?shù)組(Array), 數(shù)組是若干數(shù)據(jù)的集合,其中的每一份數(shù)據(jù)都稱為數(shù)組的元素。
注意Bash Shell 只支持一維數(shù)組,不支持多維數(shù)組
1、數(shù)組語法
在 Shell 中,用括號( )
來表示數(shù)組,數(shù)組元素之間用空格來分隔. 語法為
array_name=(item1 item2 ...) # 方式1
array_name=([索引下標(biāo)1]=item1 [索引下標(biāo)2]=item2 ...) # 方式2
注意,賦值號 =
兩邊不能有空格
2、數(shù)組定義
使用小括號定義一組數(shù)字
num1=(1 2 3 4 5)
數(shù)組中可以存在不同類型的元素
num1=(1 2 3 4 “hello”)
Shell數(shù)組元素定義后不是固定的, 定義后還可以賦值
arr[6]=100
也可以給指定元素賦值初始化
arr2=([0]=1 [2]=100 [4]=aa)
3、數(shù)組中值的獲取
1.通過下標(biāo)獲取元素值,index從0開始
${arr[index]}
2、獲取值同時復(fù)制給其他變量
item=${arr[index]}
3、使用 @
或 *
可獲取數(shù)組中的所有元素
${arr[@]} ${arr[*]}
4.獲取數(shù)組的長度或個數(shù)
${#arr[@]} ${#arr[*]}
5.獲取數(shù)組指定元素的字符長度
${#arr[索引]}
4、數(shù)組的拼接
所謂 Shell 的數(shù)組拼接(數(shù)組合并),就是將兩個數(shù)組連接成一個數(shù)組
語法
使用
@
和*
獲取數(shù)組所有元素之后進行拼接:
array_new=(${array1[@]} ${array2[@]} ...) array_new=(${array1[*]} ${array2[*]} ...)
案例展示
5、數(shù)組的刪除
刪除數(shù)組指定元素數(shù)據(jù)
unset array_name[index]
刪除整個數(shù)組
unset array_name
案例展示:刪除num1 中的第一個元素
案例展示:刪除num1這個數(shù)組
總結(jié)
到此這篇關(guān)于linux shell編程指南之字符串與數(shù)組的文章就介紹到這了,更多相關(guān)shell字符串與數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux shell查找文件顯示行號和對應(yīng)區(qū)間的內(nèi)容
今天小編就為大家分享一篇關(guān)于Linux shell查找文件顯示行號和對應(yīng)區(qū)間的內(nèi)容,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12