最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell命令中的特殊替換、模式匹配替換、字符串提取和替換的實(shí)現(xiàn)

 更新時(shí)間:2022年03月01日 15:48:32   作者:一生只畫眉  
本文主要介紹了Shell命令中的特殊替換、模式匹配替換、字符串提取和替換的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
形式說明
${var}變量本來的值
${var:-word}如果變量 var 為空或已被刪除(unset),那么返回 word,但不改變 var 的值。
${var:=word}如果變量 var 為空或已被刪除(unset),那么返回 word,并將 var 的值設(shè)置為 word。
${var:?message}如果變量 var 為空或已被刪除(unset),那么將消息 message 送到標(biāo)準(zhǔn)錯(cuò)誤輸出,可以用來檢測變量 var 是否可以被正常賦值。
若此替換出現(xiàn)在Shell腳本中,那么腳本將停止運(yùn)行。
${var:+word}如果變量 var 被定義,那么返回 word,但不改變 var 的值。

特殊替換

${var:-string},${var:+string},${var:=string},${var:?string}

      ①${var:-string}和${var:=string}:若變量var為空,則用在命令行中用string來替換${var:-string},否則變量var不為空時(shí),則用變量var的值來替換${var:-string};不同之處是${var:=string}常用于判斷var是否賦值,沒有的話則給var賦上一個(gè)默認(rèn)值。

      ② ${var:+string}:替換規(guī)則和上面的相反,即只有當(dāng)var不是空的時(shí)候才替換成string,若var為空時(shí)則不替換或者說是替換成變量 var的值,即空值。(因?yàn)樽兞縱ar此時(shí)為空,所以這兩種說法是等價(jià)的) 

      ③${var:?string}:替換規(guī)則為:若變量var不為空,則用變量var的值來替換${var:?string};若變量var為空,則把string輸出到標(biāo)準(zhǔn)錯(cuò)誤中,并從腳本中退出。我們可利用此特性來檢查是否設(shè)置了變量的值。

注意:在上面這五種替換結(jié)構(gòu)中string不一定是常值的,可用另外一個(gè)變量的值或是一種命令的輸出。

模式匹配替換

${var%pattern},${var%%pattern},${var#pattern},${var##pattern}

# 是去掉左邊(在鍵盤上#在$之左邊);% 是去掉右邊(在鍵盤上%在$之右邊);#和%中的單一符號(hào)是最小匹配,兩個(gè)相同符號(hào)是最大匹配。

第一種模式:${variable%pattern}。shell在variable中查找,看它是否一給的模式pattern結(jié)尾,如果是,把variable去掉右邊最短的匹配模式

 第二種模式: ${variable%%pattern},這種模式時(shí),shell在variable中查找,看它是否一給的模式pattern結(jié)尾,如果是,把variable中去掉右邊最長的匹配模式

第三種模式:${variable#pattern} 這種模式時(shí),shell在variable中查找,看它是否一給的模式pattern開始,如果是,把variable中去掉左邊最短的匹配模式

 第四種模式: ${variable##pattern} 這種模式時(shí),shell在variable中查找,看它是否一給的模式pattern結(jié)尾,如果是,把variable中去掉左邊最長的匹配模式

 這四種模式中都不會(huì)改變variable的值,其中,只有在pattern中使用了*匹配符號(hào)時(shí),%和%%,#和##才有區(qū)別。結(jié)構(gòu)中的pattern支持通配符,*表示零個(gè)或多個(gè)任意字符,?表示僅與一個(gè)任意字符匹配,[...]表示匹配中括號(hào)里面的字符,[!...]表示不匹配中括號(hào)里面的字符。

# 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個(gè)字符到末尾的所有字符。若num為正數(shù),從左邊0處開始;若num為負(fù)數(shù),從右邊開始提取字串,但必須使用在冒號(hào)后面加空格或一個(gè)數(shù)字或整個(gè)num加上括號(hào),如${var: -2}、${var:1-3}或${var:(-2)}。         

第二種模式:${var:num1:num2},num1是位置,num2是長度。表示從$var字符串的第$num1個(gè)位置開始提取長度為$num2的子串。不能為負(fù)數(shù)。

第三種模式:${var/pattern/pattern}表示將var字符串的第一個(gè)匹配的pattern替換為另一個(gè)pattern。

第四種模式:${var//pattern/pattern}表示將var字符串中的所有能匹配的pattern替換為另一個(gè)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    

對{}和()而言,  括號(hào)中 的重定向符只影響該條命令, 而 括號(hào)外 的重定向符影響到括號(hào)中的所有命令。

到此這篇關(guān)于Shell命令中的特殊替換、模式匹配替換、字符串提取和替換的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Shell命令替換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux截取某一段時(shí)間的日志問題

    Linux截取某一段時(shí)間的日志問題

    這篇文章主要介紹了Linux截取某一段時(shí)間的日志問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • 教你在Linux中從視頻流截取圖片幀(ffmpeg)

    教你在Linux中從視頻流截取圖片幀(ffmpeg)

    本文詳細(xì)介紹了如何在Linux環(huán)境下使用ffmpeg命令來提取視頻幀,通過設(shè)置指定的幀選擇過濾器,每10幀提取一幀,總共提取5張圖片,并設(shè)置輸出圖片的質(zhì)量,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • 詳解Linux定時(shí)任務(wù)Crontab的介紹與使用

    詳解Linux定時(shí)任務(wù)Crontab的介紹與使用

    linux內(nèi)置的cron進(jìn)程能幫我們實(shí)現(xiàn)這些需求,cron搭配shell腳本,非常復(fù)雜的指令也沒有問題。本文主要介紹了定時(shí)任務(wù)Crontab的使用,需要的可以學(xué)習(xí)一下
    2022-10-10
  • Ubuntu用戶之間相互切換方法(推薦)

    Ubuntu用戶之間相互切換方法(推薦)

    下面小編就為大家?guī)硪黄猆buntu用戶之間相互切換方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • cpu時(shí)鐘預(yù)取實(shí)例代碼分享

    cpu時(shí)鐘預(yù)取實(shí)例代碼分享

    cpu時(shí)鐘預(yù)取實(shí)例代碼分享,大家參考使用吧
    2013-12-12
  • Linux下文件剪切的shell腳本實(shí)現(xiàn)代碼

    Linux下文件剪切的shell腳本實(shí)現(xiàn)代碼

    本篇文章主要介紹了Linux下文件剪切的sh腳本實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • LINUX 生產(chǎn)環(huán)境搭建推薦教程

    LINUX 生產(chǎn)環(huán)境搭建推薦教程

    由于linux生產(chǎn)環(huán)境搭建步驟非常多,很繁瑣而且又是必不可少的步驟。雖然已經(jīng)做過很多次,但是由于步驟繁瑣,很容易忘記,下面小編抽個(gè)時(shí)間把linux生產(chǎn)環(huán)境搭建步驟記錄下來,分享在腳本之家平臺(tái),以便需要之時(shí)使用
    2015-10-10
  • Linux環(huán)境下tcpdump網(wǎng)絡(luò)協(xié)議抓包與解析

    Linux環(huán)境下tcpdump網(wǎng)絡(luò)協(xié)議抓包與解析

    這篇文章主要為大家介紹了Linux環(huán)境下tcpdump網(wǎng)絡(luò)協(xié)議抓包與解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • shell命令實(shí)現(xiàn)當(dāng)前目錄下多個(gè)文件合并為一個(gè)文件的方法

    shell命令實(shí)現(xiàn)當(dāng)前目錄下多個(gè)文件合并為一個(gè)文件的方法

    今天小編就為大家分享一篇關(guān)于shell命令實(shí)現(xiàn)當(dāng)前目錄下多個(gè)文件合并為一個(gè)文件的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Shell字符串截取的詳細(xì)方法

    Shell字符串截取的詳細(xì)方法

    這篇文章主要介紹了Shell字符串截取的詳細(xì)方法,如截取指定字?jǐn)?shù)、按指定的字符串截取、按指定要求分割,需要的朋友可以參考下
    2014-03-03

最新評論

荣成市| 祁阳县| 佛山市| 翁源县| 通江县| 嵊州市| 左贡县| 隆化县| 长泰县| 炉霍县| 哈尔滨市| 阳泉市| 莱阳市| 千阳县| SHOW| 南宁市| 紫阳县| 扎鲁特旗| 砚山县| 墨江| 平潭县| 胶州市| 兖州市| 巴东县| 建始县| 嘉荫县| 淮南市| 濮阳市| 肇州县| 阿合奇县| 白银市| 黄冈市| 雷州市| 霸州市| 平凉市| 威海市| 霍林郭勒市| 朝阳市| 工布江达县| 婺源县| 海宁市|