shell變數的賦值、變數的取值、變數的取消與查看、局部變數/用戶變數、全局變數/環境變數、特殊變數 ...
變數的賦值
#定義變數,註意等號兩邊沒有任何空格 variable=
#定義環境變數
export variable=
#雙引號:可含空格、可轉義特殊字元 variable=" "
#$() 或 反引號:將命令結果賦值給變數 variable=$( ) variable=` `
#將變數值賦值給變數
gg=$aa$bb
變數的取值
#取值
$variable
#標準寫法,建議使用此方法
${variable}
#示例:
#DAY=sunday
#echo $DAY
sunday
# echo "hello sunday"> $DAY_file.txt
# ls
# echo "hello sunday"> ${DAY}_file.txt
# ls sunday_file.txt
變數的取消與查看
#unset:取消變數和函數
unset variable
unset function
#env 查看系統所有的環境變數 #set 查看所有的系統預設變數+用戶自定義變數
局部變數/用戶變數
局部變數:只在當前的shell中有效;
用戶變數:針對與當前用戶有效, .bashrc 下可以查看。
全局變數/環境變數
當前創建變數的shell即為父shell,全局變數可以從父shell傳遞到子shell、孫shell···
註意環境變數只能向下傳遞而不能向上傳遞。
一些常見的預設變數(可通過 man bash查看):
#變數BASH:顯示當前的bash shell [root@localhost shell]# echo $BASH /bin/bash #變數BASH_VERSION:顯示當前bash shell版本 [root@localhost shell]# echo $BASH_VERSION 4.1.2(1)-release #變數HOSTNAME:主機名 [root@TXY_host test]# echo $HOSTNAME TXY_host #變數HOSTTYPE:主機架構 [root@TXY_host test]# echo $HOSTTYPE x86_64 #變數MACHTYPE:主機類型的gnu標識 [root@TXY_host test]# echo $MACHTYPE x86_64-redhat-linux-gnu #變數LANG:系統的語言環境 [root@TXY_host test]# echo $LANG C #設置語言環境為中文 # export LANG=zh_CN.UTF-8 #變數PWD:當前目錄 [root@TXY_host test]# echo $PWD /shell/test #變數OLDPWD:上一次訪問目錄 [root@TXY_host test]# echo $OLDPWD /shell #變數EUID:顯示當前用戶的UID [root@localhost ~]# echo $EUID 0 #變數CDPATH:可以快速進入此目錄 #cd時會首先查看當前目錄是否有network-scripts,若沒有則進入CDPATH定義的目錄 [root@localhost shell]# CDPATH="/etc/sysconfig" [root@localhost shell]# cd network-scripts /etc/sysconfig/network-scripts #變數FUNCNAME:用在函數內,顯示當前函數名 [root@TXY_host test]# cat funcname.sh #/bin/bash funcname() { echo $FUNCNAME } funcname [root@TXY_host test]# bash funcname.sh funcname
特殊變數
1.位置參數
$0:預留保存實際腳本名字;無論腳本是否有參數,此值均可用。
$1-$9:第1—9個參數
${10}:位置參數大於9後的表示方法
$#:腳本參數的個數總和
$*/$@:表示腳本的所有參數
2.命令返回值
執行一條命令後,
$? 值為0表示執行成功,非0則表示執行失敗。