變數的賦值
#定義變數,注意等號兩邊沒有任何空格 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. 特定的變數引數
$! Shell最後執行的後臺Process的PID
$- 顯示shell使用的當前選項,與set命令功能相同
$$ 指令碼執行的當前程式ID號
# cat aatest.sh #!/bin/bash echo $$ # ./aatest.sh 3520
3.命令返回值
執行一條命令後,
$? 值為0表示執行成功,非0則表示執行失敗。