1. 程式人生 > >bash的變量中存放的字符串的處理方式

bash的變量中存放的字符串的處理方式

bash的變量中存放的字符串的處理方式

bash的變量中存放的字符串的處理方式

bash變量:

弱變量:

1.無需實現定義即可應用;

2.變量沒有數據類型的硬性要求,默認是字符型;



1.字符串切片:

${#VAR}:返回字符型變量的變量值長度;

${VAR:offset}:返回字符型變量中第“offset”位置之後的內容,不包括第“offset”位置的字符:

offset取值範圍:0-$[${#VAR-1}]

${VAR:offset:number}:返回字符型變量中從第“offset”個字符後開始長度為“number”的字符部分;

${VAR:-length}:取字符型變量字符串最右側的“length”個字符;


註意:在“length”之前要留有空格;

技術分享圖片





2.基於模式(PATTERN)取字符串:

${VAR*PATTERN}:自左而右,查找VAR變量所存儲的字符串中,第一次被PATTERN匹配的字符,

刪除從字符串開始到第一個被PATTERN匹配到的字符之間的所有字符;


${VAR##*PATTERN}:自左而右,查找VAR變量所存儲的字符串中,第一次被PATTERN匹配的字符,

刪除從字符串開始到最後一個被PATTERN匹配到的字符之間的所有字符;

${VAR%PATTERN*}:自右而左,查找VAR變量所存儲的字符串中,第一次被PATTERN匹配的字符,

刪除從字符串開始到第一個被PATTERN匹配到的字符之間的所有字符;


${VAR%%PATTERN*}:自右而左,查找VAR變量所存儲的字符串中,所有被PATTERN匹配的字符,

刪除從字符串結尾到最後一個被PATTERN匹配到的字符之間的所有字符;

技術分享圖片



3.查找替換:

${VAR/PATTERN/SUBSTRING}:在VAR變量中,自左而右查找能夠被PATTERN匹配的內容,將其中第一個匹配到的結果更換成SUBSTRING;

${VAR//PATTERN/SUBSTRING}:在VAR變量中,自左而右查找能夠被PATTERN匹配的內容,將所有被PATTERN匹配到的結果更換成SUBSTRING;

${VAR/#PATTERN/SUBSTRING}:在VAR變量中查找行首匹配PATTERN的內容,將匹配的結果更換成SUBSTRING;

${VAR/%PATTERN/SUBSTRING}:在VAR變量中查找行尾匹配PATTERN的內容,將匹配的結果更換成SUBSTRING;

技術分享圖片


4.查找刪除:

${VAR/PATTERN}:在VAR變量中,自左而右查找能夠被PATTERN匹配的內容,將其中第一個匹配到的結果刪除;

${VAR//PATTERN}:在VAR變量中,自左而右查找能夠被PATTERN匹配的內容,將其中所有匹配到的結果刪除;

${VAR/#PATTERN}:在VAR變量中查找行首匹配PATTERN的內容,將匹配的結果刪除;

${VAR/%PATTERN}:在VAR變量中查找行尾匹配PATTERN的內容,將匹配的結果刪除;

技術分享圖片


5.字符串的大小寫轉換:

${VAR^^}:將VAR變量中的所有的小寫字母轉換成大寫字母;

${VAR,,}:將VAR變量中的所有的大寫字母轉換成小寫字母;

技術分享圖片



6.變量賦值:

${VAR:-value}:如果變量VAR為空值或者變量未被定義,那麽直接返回value中的值;否則返回變量VAR的值;

${VAR:+value}:如果變量VAR已經定義且不為空,則返回value的值;

${VAR:=value}:如果變量VAR為空值或者變量未被定義,那麽直接返回value中的值,並且將value的值賦給變量VAR;否則返回變量VAR的值;

技術分享圖片


7.變量的間接引用:

如果第一個變量的值恰好是第二個變量的變量名,從第一個變量引用第二個變量的值的方法,就稱為變量的間接引用,也稱為間接變量引用;

如:VAR1=VAR2, VAR2=hellolink


bash提供了這樣的間接變量引用的方法:

eval MYVAR=\$$VAR1

技術分享圖片































bash的變量中存放的字符串的處理方式