1. 程式人生 > >bash的常用變數

bash的常用變數

一、基礎知識:
1. bash變數的命名規則:以字母或下劃線開頭,中間由數字字母下劃線組成。
2. bash是弱型別語言,變數的預設型別是字串型。
3. 在bash中,變數可分為使用者自定義變數、環境變數、位置引數變數、預定義變數
二、使用者自定義變數:
1. 顧名思義,使用者自己定義的變數,因為bash是弱型別語言,使用者不需要宣告變數的型別,直接輸入[變數名=變數值]即可,系統會自動的將變數預設為字串型。這裡需要注意的是”=”(等號)兩邊是不能有空格的,否則系統會將變數名誤認為命令,而變數名又不是命令,系統進而會報錯。
2. 經常使用者會用到變數的疊加:向變數的尾部新增字串。比如向字串變數val尾部新增字串”123”,總共有兩種辦法:通過命令[val=”$

val”123]和[val=${val}123]都能實現,我們一般選擇第一種,即[val=”$val”123]。(因為編輯器的原因,看上去雙引號和 123之間有空格,其實沒有!)。
3. 對於變數,使用者還有一個經常的操作是對變數的檢視。檢視變數的命令是[set]命令,用來檢視系統中的所有變數。刪除使用者自定義的變數命令是[unset 變數名]。
三、環境變數
1. 環境變數和使用者自定義的區別:環境變數是全域性變數,而使用者自定義變數是區域性變數,使用者自定義的變數只能在當前的shell空間中有效,而環境變數在所有shell空間中都是有效的,除非關閉shell,否則它將一直有效。使用者可以通過命令[export 變數名]將使用者自定義的變數設定為環境變數。通過命令[env]可以檢視shell中的所有環境變數。
2. 常用的環境變數有:PS1, PATH, LANG, BASH, HOME, SHELL, LC_ALL等。對於PATH變數,用:(冒號)將兩個路徑之間進行分隔。變數LANG定義的是系統主語系的變數,LC_ALL定義的是整體語系的變數。
四、位置引數變數:
1. 作用:向指令碼傳遞引數變數。比如,在命令列輸入:指令碼名 引數1 引數2 引數3,使用者可以通過位置引數變數將引數1,引數2,引數3送入指令碼內部供指令碼使用,使用的辦法是用$
n代替,其中n表示數字0,1,2,3。$0 表示指令碼名,$1表示引數1,$2 表示引數2,$3表示引數3。如果n大於9,我們需要將兩位甚至3位數字用大括號括起來,比如第十個引數的表示方法是${10},第十一個引數表示方法是${11},第一百個引數表示方法是${100}。
2. 除了表示引數位置的變數外,bash還用了三個特殊的字元來命名三個有特殊含義的變數,分別是:#, *, @。$#表示命令後面所跟的引數個數。$*和$@都是輸出所有引數,不同的是$*是一次性將所有引數看作一個完整的字串輸出,也就是說輸出一個完整的引數字串”引數1 引數2 引數3”,而$@是將引數一個一個的輸出,先輸出引數1,再輸出引數2,最後輸出引數3。舉例:若迴圈變數是$
*的for迴圈,迴圈體將執行一次,若迴圈變數是$@,迴圈體將執行三次。
3. 預定義變數:除了變數#, *, @外,bash還提供了三個特殊字元來表示特殊含義的變數,它們分別是:?, $, !(感嘆號),?(問號)變數儲存的是上一個命令的執行狀態,如果值為0,則表示上一個命令正確執行,若為非0,則表示上一個命令錯誤執行,我們可以通過$?取出變數?(問號)中的值。變數$儲存的是當前程序的PID號,可通過\$\$取出該程序的PID號。變數!(感嘆號)儲存的是後臺執行的最後一個程序的PID號,可通過\$!取出該變數的值。
若有不對之處,敬請指正。