Linux Shell變數
阿新 • • 發佈:2022-01-02
變數分類
- 系統變數($HOME,$PWD,$SHELL,$USER...)
- 顯示所有系統變數
set
- 顯示所有系統變數
- 使用者自定義變數
定義變數
基本語法
- 宣告變數: 變數=值
- 撤銷變數: unset 變數
- 宣告靜態變數: readonly 變數
- 靜態變數不能unset
定義規則
- 可有字母、數字、下劃線組成,但不能以數字開頭
- 宣告變數的時候 變數=值, 等號兩邊不能有空格
- 變數名稱一般習慣大寫
- 如果要將指令返回值賦給變數
- A='date'【是反引號,不是單引號!】
- A=$(date)
舉例
注:ehco後新增的內容會直接以文字形式輸出, 而遇到$
時會將對應內容識別為變數,轉而輸出變數內容。
設定環境變數
為什麼需要設定環境變數
環境變數相當於全域性變數,按上文的方式在一個shellA定義的變數在shellB將不起作用。而如果定義一個環境變數,那麼它無論是在shellA還是在shellB中都能起作用
如何設定
- 在/etc/profile中新增環境變數
- 新增語法 :
export 變數名=變數值
【等號兩邊同樣不能有空格】 - 執行
source /etc/profile
使配置檔案生效
舉例:新增環境變數TOMCAT_HOME
位置引數變數
介紹
- 當我們執行一個shell指令碼時,如果希望獲取到命令列的引數資訊,就可以使用到位置引數變數
- 比如:./myshell.sh 100 200,這個就是一個執行shell的命令列,100,200是傳入的引數
- 類比c語言中的scanf()
基本語法
- $n(功能描述:n為數字,$0代表命令本身,$1-$9代表第一到第九個引數,十以上的引數,十以上的引數需要用大括號包含,如${10})
- $(功能描述:這個變數代表命令列中所有的引數,$把所有的引數看成一個整體)
- $@(功能描述:這個變數也代表命令列中所有的引數,不過$@把每個引數區分對待)
- $#(功能描述:這個變數代表命令列中所有引數的個數)
舉例
預定義變數
基本介紹
shell設計者實現定義好的變數,可以在shell指令碼中直接使用
基本語法
- $$(功能描述:當前指令碼的程序的程序號(PID))
- $!(功能描述:後臺執行的最後一個程序的程序號(PID))
- $?(功能描述︰最後一次執行的命令的返回狀態。如果這個變數的值為0,證明上一個命令正確執行如果這個變數的值為非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了。)