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