獲取字符串的長度
${#變量名} #如果變量未被賦值或者值是空字符則返回0
#!/bin/bash
str='this is string' #使用帶引號不會將${}展開而是直接輸出,使用雙引號會展開,如'this is string ${name}'會直接輸出 this is string ${name}
echo ${#str} # 14
字符串的截取
${變量名:數(shù)值} # 要展開的是"變量名"代表的字符串從"數(shù)值"所指向的位置開始到末尾位置,數(shù)值是從0開始計數(shù)的,這個"數(shù)值"可以為負(fù)數(shù),但是在不同shell版本上是有差異的,比如我的shell (5.1) 負(fù)數(shù)是無效的
${變量名:數(shù)值:長度} #從"數(shù)值"處開始截取"長度"個字符串
#!/bin/bash
str='this is string'
echo ${str:4} # is string
echo ${str:5:2} # is
使用匹配模式進(jìn)行截取
${變量名#模式} #從左向右,將(最短)匹配部分截取
${變量名##模式} #從左向右,將(最長)匹配部分截取
${變量名%模式} #從右向左,將(最短)匹配部分截取
${變量名%%模式} #從右向左,將(最長)匹配部分截取
#!/bin/bash
path=home.tag.gz
echo ${path#*.} # tag.gz
echo ${path##*.} #gz
echo ${path%.*} # home.tag
echo ${path%%.*} #home
字符串替換
${變量名/模式/替換的字符串} #只會替換第一個匹配的
${變量名//模式/替換的字符串} #替換第所有匹配的
#!/bin/bash
path=home.tag.gz
echo ${path/./_} # home_tag.gz
echo ${path//./_} # home_tag_gz
echo ${path/.*/.txt} # home.txt
file=index.html
echo ${file/%.html/.txt} # index.txt
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。