詳解Linux bash中的變數
在Linux系統中進行日常運維或者是編寫指令碼時,變數是再熟悉不過的了,但這些變數都有哪些型別,具體的用法又有哪些差異呢?本文整理分享給大家:
一、bash變數型別:
本地變數
區域性變數
環境變數
位置變數
特殊變數(內建)
二、本地變數:
varname=value:作用域為整個bash程序可以使用;
變數命名規範:
1. 只能含字母、數字和下劃線,並且以字母和下劃線開頭
2. 最好不要跟系統已有的環境變數重名
3. 見名知意
三、區域性變數:
local varname=value:作用域為當前程式碼段;
四、環境變數:
作用域為當前shell程序及其子程序,不能影響到其父程序;
export varname=value “匯出”,如果變數已經定義可以只是用變數名 export varname,即
1. export varname=value
2. varname=value
export varname
指令碼在執行命令時會啟動一個子shell環境變數:
系統自動執行的指令碼(非命令列啟動)就需要自我定義需要的個環境變數;
五、位置變數:
$1,$2,$3,……
cat first.sh test.txt hello
$1: first.sh
$2: test.txt
$3: hello
shift:踢掉引數
shift n:踢掉n個引數,預設踢掉一個引數
六、特殊變數:
$?:上一個命令執行狀態的返回值:
程式執行可能有兩種返回值:
1. 程式執行結果
2. 程式狀態返回嗎(0-255)
0 則為執行正確
1-255 則執行出錯(1,2,127系統預留);
$#:獲取當前shell命令列中引數的總個數
$*:獲取當前shell的所有引數 “$1 $2 $3 …,受IFS控制
[email protected]
$0 獲取當前執行的shell指令碼的檔名
$n 獲取當前執行的shell指令碼的第n個引數值,n=1..9
$$ 獲取當前shell的程序號(PID)
$! 執行上一個指令的PID