<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
形式 | 說明 |
---|---|
${var} | 變數本來的值 |
${var:-word} | 如果變數 var 為空或已被刪除(unset),那麼返回 word,但不改變 var 的值。 |
${var:=word} | 如果變數 var 為空或已被刪除(unset),那麼返回 word,並將 var 的值設定為 word。 |
${var:?message} | 如果變數 var 為空或已被刪除(unset),那麼將訊息 message 送到標準錯誤輸出,可以用來檢測變數 var 是否可以被正常賦值。 若此替換出現在Shell指令碼中,那麼指令碼將停止執行。 |
${var:+word} | 如果變數 var 被定義,那麼返回 word,但不改變 var 的值。 |
${var:-string},${var:+string},${var:=string},${var:?string}
①${var:-string}和${var:=string}:若變數var為空,則用在命令列中用string來替換${var:-string},否則變數var不為空時,則用變數var的值來替換${var:-string};不同之處是${var:=string}常用於判斷var是否賦值,沒有的話則給var賦上一個預設值。
② ${var:+string}:替換規則和上面的相反,即只有當var不是空的時候才替換成string,若var為空時則不替換或者說是替換成變數 var的值,即空值。(因為變數var此時為空,所以這兩種說法是等價的)
③${var:?string}:替換規則為:若變數var不為空,則用變數var的值來替換${var:?string};若變數var為空,則把string輸出到標準錯誤中,並從指令碼中退出。我們可利用此特性來檢查是否設定了變數的值。
注意:在上面這五種替換結構中string不一定是常值的,可用另外一個變數的值或是一種命令的輸出。
${var%pattern},${var%%pattern},${var#pattern},${var##pattern}
# 是去掉左邊(在鍵盤上#在$之左邊);% 是去掉右邊(在鍵盤上%在$之右邊);#和%中的單一符號是最小匹配,兩個相同符號是最大匹配。
第一種模式:${variable%pattern}。shell在variable中查詢,看它是否一給的模式pattern結尾,如果是,把variable去掉右邊最短的匹配模式
第二種模式: ${variable%%pattern},這種模式時,shell在variable中查詢,看它是否一給的模式pattern結尾,如果是,把variable中去掉右邊最長的匹配模式
第三種模式:${variable#pattern} 這種模式時,shell在variable中查詢,看它是否一給的模式pattern開始,如果是,把variable中去掉左邊最短的匹配模式
第四種模式: ${variable##pattern} 這種模式時,shell在variable中查詢,看它是否一給的模式pattern結尾,如果是,把variable中去掉左邊最長的匹配模式
這四種模式中都不會改變variable的值,其中,只有在pattern中使用了*匹配符號時,%和%%,#和##才有區別。結構中的pattern支援萬用字元,*表示零個或多個任意字元,?表示僅與一個任意字元匹配,[...]表示匹配中括號裡面的字元,[!...]表示不匹配中括號裡面的字元。
# var=testcase # echo $var testcase # echo ${var%s*e} testca # echo $var testcase # echo ${var%%s*e} te # echo ${var#?e} stcase # echo ${var##?e} stcase # echo ${var##*e} # echo ${var##*s} e # echo ${var##test} case
${var:num},${var:num1:num2},${var/pattern/pattern},${var//pattern/pattern}
第一種模式:${var:num},shell在var中提取第num個字元到末尾的所有字元。若num為正數,從左邊0處開始;若num為負數,從右邊開始提取字串,但必須使用在冒號後面加空格或一個數位或整個num加上括號,如${var: -2}、${var:1-3}或${var:(-2)}。
第二種模式:${var:num1:num2},num1是位置,num2是長度。表示從$var字串的第$num1個位置開始提取長度為$num2的子串。不能為負數。
第三種模式:${var/pattern/pattern}表示將var字串的第一個匹配的pattern替換為另一個pattern。
第四種模式:${var//pattern/pattern}表示將var字串中的所有能匹配的pattern替換為另一個pattern。
[root@centos ~]# var=/home/centos [root@centos ~]# echo $var /home/centos [root@centos ~]# echo ${var:5} /centos [root@centos ~]# echo ${var: -6} centos [root@centos ~]# echo ${var:(-6)} centos [root@centos ~]# echo ${var:1:4} home [root@centos ~]# echo ${var/o/h} /hhme/centos [root@centos ~]# echo ${var//o/h} /hhme/cenths
對{}和()而言, 括號中 的重定向符隻影響該條命令, 而 括號外 的重定向符影響到括號中的所有命令。
到此這篇關於Shell命令中的特殊替換、模式匹配替換、字串提取和替換的實現的文章就介紹到這了,更多相關Shell命令替換內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45