shell變數與字串操作

來源:互聯網
上載者:User

標籤:io   os   使用   ar   strong   檔案   sp   div   on   

預設情況下,Bash shell是一種無類型的腳步語言,除非用declare特別聲明,否則它不會區分一個變數是整數變數、浮點數變數還是字串變數。在Bash shell中所有的變數都被看成是字串,使用時也不需要進行聲明。

 

1、變數的命名

bash shell中變數的命名規則和C語言相同,必須是由英文字母、數字及底線組成,第一個字元必須是字母或底線,變數的長度沒有限制,但英文字母區分大小寫。雖然,bash shell中使用變數時不需要聲明,但還是提倡對一些重要的變數進行聲明、添加註釋,以便閱讀和維護。聲明或建立一個變數之後,它的範圍是當前shell,子shell無法擷取父shell中定義的變數,除非該變數時環境變數。

 

2、設定變數

在bash shell中要設定某個變數的值是很容易的,只需要按照:

變數名稱=值

的方式即可改變某個變數的值,需要注意的是等號的兩邊是不能有空格的,若值中含有空格的話,需要用引號括起來。

 

3、擷取變數值

要擷取某個變數的值只需要在該變數的名稱前面加上$或用${}將變數括起來即可。

# echo $PATH

# echo ${PATH}

 

4、取消與清空變數

當你不再需要某個變數時,你可能想取消該變數,即將該變數從當前名字空間中刪除並釋放該變數所佔用的記憶體。在bash shell中可以用unset命令來取消某個變數。用法如下:

unset 變數名稱 或 unset -v 變數名稱

-v表示取消變數,unset除了可以用來取消變數外,還可以用來取消函數,用unset來取消函數時,用法如下:

unset -f 函數名稱

使用unset以後,變數就不複存在了,這可能並不是你想要的,你可能只是想將清除該變數中的值,使其為null,即清空變數,清空變數的操作如下:

變數名稱=

 

5、環境變數

只有當一個變數成為環境變數時,它才能為子shell所用,為了使一個變數成為環境變數,需要使用export命令,具體如下:

變數名稱="xxxx"

export 變數名稱 

export 變數名稱="xxxx"

除了使用export之後,還可以在聲明的時候就將變數指定為環境變數,如下:

declare -x 變數名稱

 

6、bash的內建變數

除了環境變數和使用者自訂的變數之外,bash shell中還會用到很多的內建變數,下面介紹一些常用的內建變數。

BASH -- bash的完整路徑,通常是/bin/bash

BASH_VERSION -- bash的版本

BASH_ENV -- 在非互動模式下,會先檢查$BASH_ENV是否有指定的開機檔案,如果有則先執行它

ENV -- 與BASH_ENV類似,不過是在POSIX模式下,會先檢查$ENV是否有指定的開機檔案,如果有則先執行它

CDPATH -- cd命令的搜尋路徑

PATH -- 命令的搜尋路徑

EUID -- 有效使用者id

FUNCNAME -- 在函數執行期間,即為函數的自身的名稱

HOSTNAME -- 主機名稱

HOSTTYPE -- 主控件類型,如i386

OSTYPE -- 執行bash的作業系統類型,如linux-gnu

HOME -- 使用者主目錄

IFS  --  預設的欄位分隔符號

OPTARG -- 使用getopts處理選項時,取得的選項的參數

 

OPTIND -- 使用getopts處理選項時,選項的索引值

OPTERR -- 若將OPTERR設定為1,則getopts發生錯誤,輸出錯誤資訊

$1~$n -- 位置參數,即傳入程式或函數的參數,$1即第一個參數,$2為第二個參數,其他類推

$* --   所有的位置參數,並將其看成一個字串,如”test.sh abc 123“,則$*為”abc 123“

[email protected] --  所有的位置參數,並將其看成一個字串數組,如”test.sh abc 123“,則$*為”abc 123“

$# --  位置參數的個數

$? --  上一條命令執行結束後的傳回值

$$ --  當前bash shell的進程號

$! --  上一個背景程式的進程號

 

7、調整變數的屬性

declare命令不僅可以用來聲明變數,還可以用來調整變數的屬性,具體用法如下:

-p  顯示變數的屬性

-a  變數是一個數組

-i   變數是一個整數

-r  變數為唯讀

-x  變數為環境變數

shell變數與字串操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.