SHELL心得-關於變數的使用

來源:互聯網
上載者:User

1、關於變數的次序問題

在指令碼中,對於同一個進程來說,沒有全域或者局部變數之分。

就是説,假如你在一個函數內使用了一個變數,而且在函數以外根本沒有這個變數的半點鐘蹤跡。但是,只要你曾經調用這個函數,那麼在指令碼接著的地方,你都可以使用這個變數。

具體例子如下:

大概描述如上:

1、調用了函數

#!/bin/shtest(){a="1"return}testecho $a

顯示:

kaiwii@ubuntu:~$ ./tst
1
2、沒有調用這個函數

#!/bin/shtest(){a="1"return}#testecho $a

顯示:

沒有

總結:

我對這個問題是這樣子理解:指令碼嘛,不過是在調用別人的程式而已,人家沒必要為了記錄你的層次而多建立一個堆棧。所以,在編寫SHELL的過程中,只需要考慮變數的次序關係,至於嵌套(全域等)的關係,就由他去吧!
2、關於變數$*,$n的使用

對於這個的理解,我想用一個關於J2EE方面的知識去理解一下。編寫J2EE代碼,取資料肯定從request對象中去取得,然後發資料到下面一層有肯定需要藉助response對象。J2EE內部就是藉助response對象與request對象之間的接力完成變數的傳遞的。而在SHELL中,使用這族變數也與此有所類似,向函數或者調用另外一個SHELL檔案時,可以在後面添加參數。而在這些函數或者另外一個SHELL檔案中,可以通過$n族變數取回這些參數。而我們存取參數時候,需要注意的只是這些參數之間的順序。

3、取值要用$

賦值直接用變數名稱即可,而需要取這個變數(a)的值的話就需要使用$a

相關文章

聯繫我們

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