Ubuntu命令學習:bash中變數內容的刪除、替代與替換

來源:互聯網
上載者:User

一個變數的內容可能經常被替換的,比如說我安裝了某軟體,但是軟體的可執行檔沒有被更新到環境變數中去,因此不得不每次進入安裝檔案的bin目錄下去執行相應的可執行程式來啟動程式,這是很麻煩的一件事情。你可以將這個bin目錄追加到PATH環境變數中,以此便能一勞永逸,無論在任何路徑下都能啟動該應用程式了。但是對於剛剛開始正式使用Ubuntu的菜鳥來說,一切沒有那麼順利的,你會犯錯,甚至把PATH環境變數搞錯,這真是要命的錯誤,如何處理好變數內容就成了個中關鍵。

一步到位的方法是這樣:進入你可執行程式的檔案夾,然後執行一下命令

PATH=$PATH:$(pwd)   或者是   PATH=$PATH:`pwd`/*注意,這裡的`不是單引號,而是鍵盤左上方,1旁邊的那個符號*/

好了,這樣肯定是萬無一失了。但是對於菜鳥來說,你很可能寫成這個樣子:

PATH=$PATH:${pwd}   /*即,你小括弧變成了大括弧,而$()才是先行指令的模式,這個錯誤的指令會把*/ 

或者是寫成這個樣子

PATH=$PATH:'pwd'

這兩種處理方式的輸出分別是:

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:pwd

此時,你就要使用變數內容的刪除與替換的規則進行修正了,規則如以下表格所示:

變數設定方式 說明
${ 變數#關鍵字} 若變數內容從頭開始的資料符合“關鍵字”,則將符合的最短資料刪除
${變數##關鍵字} 若變數內容從頭開始的資料符合“關鍵字”,則將符合的最長資料刪除
${變數%關鍵字} 若變數內容從尾向前的資料符合“關鍵字”,則將符合的最短資料刪除
${變數%%關鍵字} 若變數內容從尾向前的資料符合“關鍵字”,則將符合的最長資料刪除
${變數/舊字串/新字串} 若變數內容符合“舊字串”,則將第一個字串用新字串代替
${變數//舊字串/新字串} 若變數內容符合“舊字串”,則全部用新字串去代替舊字串

所以說如果要將以上錯誤的變數恢複原型,應該做的操作如下:

對於

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:

施加操作:

PATH=${PATH%:}

對於

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:pwd

施加操作:

PATH=${PATH%:pwd}

好了,以上就是一個簡單的對變數處理的過程了,最後有個小點要注意,對於諸如這個操作:

echo PATH=${PATH#/*lightdm:}

雖然終端顯示的結果確實是將PATH變數中的第一個路徑給去掉了,但是,PATH變數的值並沒有改變,你再echo $PATH試試,其實PATH還是原值。如果想要使得相應的操作對變數生效,必須要進行一個賦值的過程。即讓

PATH=${PATH#lightdm:}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.