Shell學習之Bash變量詳解(二)
阿新 • • 發佈:2019-02-12
生效 tro 固定 字符 var $0 路徑 查看 列表
Shell學習之Bash變量詳解
目錄
Bash變量
Bash變量註意點
用戶自定義變量
環境變量
位置參數變量
預定義變量
Bash變量
用戶自定義變量:在Bash中由用戶定義的變量。 環境變量:這種變量中主要保存和系統操作環境相關的數據。 位置參數變量:這種變量主要是用來向腳本當中傳遞參數或數據的,變量名不能自定義,變量作用是固定的。 預定義變量:是Bash中已經定義好的變量,變量名不能自定義,變量作用也是固定的。
Bash變量註意點
1.變量名稱可以由字母、數字和下劃線組成,但是不能以數字開頭。如果變量名是"2name"則是錯誤的。 2.在Bash中,變量的默認類型都是字符串型,如果要進行數值運算,則必須指定變量類型為數值型。 3.變量用等號連接值,等號左右兩側不能有空格。 4.變量的值如果有空格,需要使用單引號或雙引號包括。 5.在變量的值中,可以使用"\"轉義符。 6.如果需要增加變量的值,那麽可以進行變量值得疊加。不過變量需要用雙引號包含"$變量名"或用${變量名}包含。 7.如果是把命令的結果作為變量值賦予變量,則需要使用反引號或$()包含。 8.環境變量名建議大寫,便於區分。
用戶自定義變量
在用戶當前的shell進程中使用 一般在 $HOME/.bash_profile 中定義。 也可以在命令行定義,但只在用戶當前shell進程中有意義,如果在shell中啟動另一個進程或退出,此值將無效。
變量定義: name="liyi" 變量疊加: name=123 name="$name"456 name=${name}789 變量的調用 echo "$name" 或 echo ${name} 變量查看 set 變量刪除 unset name
環境變量
環境變量適用於所有用戶進程 在/etc/profile中進行定義 在用戶進程使用前,必須用export命令導出;建議環境變量都大寫。
設置環境變量 export 變量名=變量值 查看環境變量取值 echo $var_name 查詢變量 env 刪除變量 unset變量名 註:該命令只是從當前用戶進程中刪除,不會從文件/etc/profile刪除
嵌入shell變量
一般來講,BASH有一些預留的環境變量名,這些變量名不能做其他用 途,通常在/etc/profile中建立這些嵌入的環境變量,但這不絕對,取決於用戶 shell的變量列表: CDPATH; EXINIT; HOME; IFS; LOGNAME; MAIL; MAILCHECK; PATH; PS1; PS2; SHELL; TERMINFO; TERM; TZ
重要環境變量詳解
PATH變量:系統查找命令的目錄,當我們在執行命令時,系統會到這些目錄去尋找命令,然後執行。 假設現在創建一個文件test.sh chmod 755 test.sh ./test.sh 如果你不想這麽麻煩,怎麽辦? PATH="PATH":/root(後面為存放test.sh的目錄)
PS1變量
默認格式:
可以定義格式的例子:
PS1=‘[\u@\t\w]\$ ‘ PS1=‘[\u@\@ \h \# \W]\$ ‘ PS1=‘[\u@\h \W]\$ ‘
總結:
使用命令定義的環境變量在下次重啟就不會生效。
定義永久環境變量在/etc/profile文件中定義。
位置參數變量
我剛開始聽到名字的時候,我就想到了python中sys.argv[]的功能,其實位置參數變量和它很相似。
都是接收外部參數,這個參數是用戶從外部輸入的,第一個$0為程序本身路徑,從第二個參數起為用戶輸入的參數。
例子
#!/bin/bash echo $0 echo $1 echo $2 echo $3
#!/bin/bash num1=$1 num2=$2 sum=$(($num1+$num2)) echo $sum
預定義變量
Shell學習之Bash變量詳解(二)