bash 變數範圍

來源:互聯網
上載者:User

bash 裡面有兩種範圍一種是全域範圍,即預設所聲明的變數;另外一種則是局部範圍,用local關鍵字聲明的變數。

1)全域變數聲明有如下幾種情形:

#!/bin/bashmm=12 #visible globallyfunc() {    mn=34  #visible globally    echo "mc=${mc}" #is visible}mc=35  #visible globally# echo "mn={$mn}"  #is not visiblefuncecho "mm=${mm};mn=${mn};mc=${mc}"

但是在函數裡面聲明的全域變數mn,在主函數沒有被調用前,是不可見。

2) 局部範圍,聲明變數時,在前面添加local關鍵字, 並且只能應用在函數裡面,其範圍
只是在當前函數塊,及其子函數內可見。

#!/bin/bashfunc1() {    local loc1=11    echo "func1 loc1=${loc1}" #is visible}func2() {    echo "func2 loc1=${loc1}"  #is visible}func1echo "local loc1:${loc1}" #not visible

有一種特殊的情形是: 當局部變數的聲明和設定在一個單一命令列時,顯示操作的順序是,先設定變數,
然後再限制變數的作用範圍,這一結果體現在傳回值上。
如下:

#!/bin/basht=$(exit 1)echo $?  #  return 1echo "t=${t}"func() {    t1=$(exit 1)    echo $?     #  return 1    echo "t1=${t1}"    local t2=$(exit 1)    echo $? #  return 0    echo "t2=${t2}"    local t3    t3=$(exit 1)    echo $?  #  return 1    echo "t3=${t3}"}func()

聯繫我們

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