2-1 Shell字符串處理之${}

符號(hào):${}除了引用變量外饲窿,${}還有一個(gè)重要的功能煌寇,就是文本處理,單行文本基本上可以滿足你所有要求逾雄。

2.1 獲取字符串長度

?  ~ VAR='Hello, world!'
?  ~ echo $VAR;
Hello, world!
?  ~ echo ${#VAR}
13
?  ~

2.2 字符串切片
格式:
${parameter:offset}
${parameter:offset:length}
截取從offset個(gè)字符開始阀溶,向后length個(gè)字符腻脏。

#截取hello字符串
?  ~ VAR='Hello World!'
?  ~ echo ${VAR:0:5}
Hello
#截取wo字符串
?  ~ echo ${VAR:6:2}
Wo
#截取World字符串
?  ~ echo ${VAR:5}
 World!
#截取最后一個(gè)字符
?  ~ echo ${VAR:(-1)}
!
#截取最后2個(gè)字符
?  ~ echo ${VAR:(-2)}
d!
#截取從倒數(shù)第3個(gè)字符后的2個(gè)字符
?  ~ echo ${VAR:(-3):2}
ld

2.3替換字符
格式:${parameter/pattern/string}

?  ~ VAR='hello world world!'
#將第1個(gè)world替換為WORLD
?  ~ echo ${VAR/world/WORLD}
hello WORLD world!
#將全部world替換為WORLD
?  ~ echo ${VAR//world/WORLD}
hello WORLD WORLD!
?  ~ VAR=123abc
#替換正則匹配為空:
?  ~ echo ${VAR//[^0-9]/}
123
?  ~ echo ${VAR//[0-9]/}
abc

patterm 前面開頭一個(gè)正斜杠為只匹配第一個(gè)字符串,兩個(gè)正斜杠為匹配所有字符淌哟。

2.4 字符串截取
格式:
${parameter#word}
${parameter##word}
${parameter%word}
${parameter%%word}
# 去掉左邊迹卢,最短匹配模式,
##最長匹配模式徒仓。
%去掉右邊腐碱,最短匹配模式,
%%最長匹配模式掉弛。

?  ~ URL="http://www.baidu.com/baike/user.html"
#以//為分割症见,截取右邊字符串
?  ~ echo ${URL#*//}
www.baidu.com/baike/user.html
#以/為分隔符截取右邊字符串
?  ~ echo ${URL##*/}
user.html
#以//為分隔符截取左邊字符串
?  ~ echo ${URL%%//*}
http:
#以/為分隔符截取左邊字符串
?  ~ echo ${URL%/*}
http://www.baidu.com/baike
#以.為分隔符截取左邊
?  ~ echo ${URL%.*}
http://www.baidu.com/baike/user
#以.為分隔符截取右邊
?  ~ echo ${URL%.*}
http://www.baidu.com/baike/user

2.5 變量狀態(tài)賦值
${VAR:-string} ${VAR:+string} ${VAR:=string} ${VAR:?string}
如果 VAR 變量為空則返回 string
如果 VAR 變量不為空則返回 string
如果 VAR 變量為空則重新賦值 VAR 變量值為 string 如果 VAR 變量為空則將 string 輸出到 stderr

#如果變量為空就返回 hello world!:
?  ~ VAR=
?  ~ echo ${VAR:-'hello world!'}
hello world!
#如果變量不為空就返回 hello world!:
?  ~ VAR="hello"
?  ~ echo ${VAR:+'hello world!'}
hello world!
#如果變量為空就重新賦值:
?  ~ VAR=
?  ~ echo ${VAR:=hello}
hello
?  ~ echo $VAR
hello
如果變量為空就將信息輸出 stderr:
?  ~ VAR=
?  ~ echo ${VAR:?value is null}
zsh: VAR: value is null

${}主要用途大概就這么多了,另外還可以獲取數(shù)組元素殃饿,在后面會(huì)分享到谋作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市乎芳,隨后出現(xiàn)的幾起案子遵蚜,更是在濱河造成了極大的恐慌,老刑警劉巖奈惑,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吭净,死亡現(xiàn)場離奇詭異,居然都是意外死亡肴甸,警方通過查閱死者的電腦和手機(jī)寂殉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來原在,“玉大人友扰,你說我怎么就攤上這事∈粒” “怎么了村怪?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長浮庐。 經(jīng)常有香客問我甚负,道長,這世上最難降的妖魔是什么兔辅? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任腊敲,我火速辦了婚禮,結(jié)果婚禮上维苔,老公的妹妹穿的比我還像新娘碰辅。我一直安慰自己,他們只是感情好介时,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布没宾。 她就那樣靜靜地躺著凌彬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪循衰。 梳的紋絲不亂的頭發(fā)上铲敛,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音会钝,去河邊找鬼伐蒋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛迁酸,可吹牛的內(nèi)容都是我干的先鱼。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼奸鬓,長吁一口氣:“原來是場噩夢啊……” “哼焙畔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起串远,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤宏多,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后澡罚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伸但,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年始苇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了砌烁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筐喳。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡催式,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出避归,到底是詐尸還是另有隱情荣月,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布梳毙,位于F島的核電站哺窄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏账锹。R本人自食惡果不足惜萌业,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奸柬。 院中可真熱鬧生年,春花似錦、人聲如沸廓奕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蒸绩,卻和暖如春衙四,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背患亿。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國打工传蹈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人步藕。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓卡睦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親漱抓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子表锻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容