當前位置:編程學習大全網 - 編程語言 - Shell腳本:${...}在字符串中的多種用法

Shell腳本:${...}在字符串中的多種用法

1、${var}

限定變量。

如果壹個變量名A是另壹個變量名AB的前部分,那麽,如果要在AB相連時,要得到A的值,就必須使用${var}限定。

如果變量名不會產生歧義時(即獨立的變量名),${var}與$var沒有任何區別。

var="hello"

var_01="hello01"

echo? $var $var_01 ${var}_01

>>> hello hello01 hello_01

2、${#var}

得到變量var的長度

var="hello"

echo ${#var}

>>> 5

3、${var#}

刪除變量首部的字符(串),

"#"後面的可以是字面串,也可以是正則表達式(惰性匹配)。

var="hello"

echo ${var#he}

>>> llo

var="/res_pos/path/from/something"

echo ${var#/}

>>> res_pos/path/from/something # 刪除第壹個"/"

echo ${var#/*/}

>>> path/from/something? # 刪除首部匹配"/*/"的串,即"/res_pos/"

4、${var##}

刪除變量首部的字符(串),

只是,當使用2個"##"時,匹配是貪婪的(貪婪匹配,也就是盡可能多的匹配)。

echo ${var##/*/}

>>> something? # 刪除首部匹配"/*/"的串,即"/res_pos/path/from/"。

5、${var%}

刪除變量尾部的字符(串),

"%"後面的可以是字面串,也可以是正則表達式(惰性匹配)。

var="hello"

echo ${var%llo}

>>> he

var="~/res_pos/path/from/something"

echo ${var%/*}

>>> ~/res_pos/path/from # 刪除尾部的"/something"

6、${var%%}

刪除變量尾部的字符(串),

只是,當使用2個"%%"時,匹配是貪婪的(對應於第4條)

var="~/res_pos/path/from/something"

echo ${var%/*}

>>> ~ # 刪除第壹個的"/"後的所有所有內容(包括"/"),貪婪匹配中,"/*"就是"/"後的所有字符串

7、${var::}

跟python的切片概念相似,取變量var的起始索引,

指定長度的子串(${var:索引:長度})。

var="~/res_pos/path/from/something"

echo ${var:0:5}

>>> ~/res

echo ${var:1:5}

>>> /res_ ? # 可見,字符串的索引是從0開始的

echo ${var::5}

>>> ~/res ? # 省略"索引",默認為從0開始

echo ${var:1:}

>>> ? # 省略"長度",默認長度為0,所以輸出為空

8、${var//}

字符串替換。

將var中的字符串A替換成字符串B(${var/A/B})。

var="hello world"

echo ${var/hello/hi}

>>> hi world ? # 字符串"hello"替換成了"hi"

echo ${var/l/X}

>>> heXlo world? # 第壹個"l"替換成了"X"

9、${var///}

字符串替換,

與第8點相同,只不過,現在是將所有出現的串A替換成串B(${var//A/B})。

var="hello world"

echo ${var//l/X}

>>> heXXo worXd? # 所有的"l"都替換成了"X"

10、${var/#/}

替換字符串首部的串A為串B,

(${var/#A/B}),與第8點不同的是,這裏只替換首部的串A。

var="hello world. hello baby."

echo ${var//h/H}

>>> Hello world. Hello baby. # 將所有"h"替換成了"H"

echo ${var/#h/H}

>>> Hello world. hello baby. # 將首部的"h"替換成了"H"

echo ${var/e/E}

>>> hEllo world. hello baby. # 將第壹個出現的"e"替換成了"E"

echo ${var/#e/E}

>>> hello world. hello baby. # 首字符不是"e",所以沒有進行任何替換,原樣輸出。

11、${var/%/}

替換字符串尾部的串A為串B,

(${var/%A/B}),與第10點相似,只是這是處理的是字符串尾。

var="hello hello"

echo ${var/%o/END}

>>> hello hellEND # 將尾部的字符"o",替換成了"END"。

  • 上一篇:大源附近哪裏學籃球場地比較好?
  • 下一篇:點貓校園編程的網站是什麽?
  • copyright 2024編程學習大全網