變量
- 變量是在程序中保存用戶數(shù)據(jù)的一塊內(nèi)存空間,變量名就是這個內(nèi)存空間的地址
- 計算機(jī)重啟后,變量數(shù)值會丟失
- 標(biāo)準(zhǔn)的命名為x="xxxxxxx"
- 變量調(diào)用為${x},在不引起歧義的情況下可簡寫成$x
- 變量名盡量以字母開頭.只可包含字母、數(shù)字氢惋、下劃線
- 變量分類
-
declare = typeset 定義變量類型(declare -i xxx定義xxx為整數(shù)型)
-i:整數(shù)型,之后有運(yùn)算求值表達(dá)式結(jié)果為整數(shù),如果求值失敗或不是整數(shù),則為0 -p:顯示所有變量的值 -r:聲明為只讀變量,或用readonly name,變量只有在進(jìn)程結(jié)束才可以釋放 -a:數(shù)組變量,不用事先定義,數(shù)值沒有下標(biāo)則=數(shù)組+0下標(biāo) -f:顯示所有自定義函數(shù),包括名稱和函數(shù)體 -x:將變量聲明為環(huán)境變量,可以在以后的腳本和程序中調(diào)用
-
常用環(huán)境變量
PATH:命令搜索路徑,以冒號為分隔符 HOME:用戶的主目錄 COLUMNS:命令編輯模式下可使用命令行的長度 HISTFILE:命令歷史文件 HISTSIZE:命令歷史文件的最大行數(shù) IFS:定義SHELL的分隔符 LOGNAME:當(dāng)前登陸名 SHELL:shell的全路徑名 TERM:終端類型 TMOUT:shell自動退出的時間,0為不自動退出 PWD:當(dāng)前工作目錄 OLDPWD:上一次工作目錄
-
變量對比
變量配置方式 y 沒配置 y 為空字符串 y 已配置非空字符串 x=${y-新值} x=新值 x= x=$y x=${y:-新值} x=新值 x=新值 x=$y x=${y+新值} x= x=新值 x=新值 x=${y:+新值} x= x= x=新值 x=${y=新值} y=新值,x=新值 y不變 x= y不變 x=$y x=${y:=新值} y=新值 x=新值 y=新值 x=新值 y不變 x=$y x=${y?新值} 新值 輸出至 err x= x=$y x=${y:?新值} 新值 輸出至 err 新值 輸出至 err x=$y -
變量賦值及簡單調(diào)用
[xzt7566@centos7-test Downloads]$ cat test.sh #! /bin/bash x=123 變量賦值,這個 = 前后不能有空格 let "x += 1" 運(yùn)算,這個 += 兩邊要有空格 echo "x=$x" $x表示調(diào)用變量,$x中間不能用空格,其他原樣輸出 [xzt7566@centos7-test Downloads]$ bash test.sh x=124 echo 顯示空行 y=${x/1/abc} 將x中1換成abc,定義為y echo "y=$y" y=abc24 124中的1替換成abc..結(jié)果為abc24 declare -i y 定義y為整數(shù)型變量,但不影響以前的賦值 [xzt7566@centos7-test Downloads]$ cat >> test.sh let "y += 2" 運(yùn)算 echo "y=$y" y不是數(shù)字,所以自動在運(yùn)算時清為0 y=2 0+2=2 結(jié)果為2 #! /bin/bash typeset -i qq 在聲明了變量之前規(guī)定了類型,則在賦值時為進(jìn)行運(yùn)算 qq=18/2 echo "$qq" [xzt7566@centos7-test Downloads]$ bash 1.sh 9 #! /bin/bash qq=18/2 typeset -i qq 在聲明了變量之后規(guī)定了類型,則直接顯示為原字符串 echo "$qq" [xzt7566@centos7-test Downloads]$ bash 1.sh 18/2 [xzt7566@centos7-test Downloads]$ echo "$[12/3]" 方括號表示為運(yùn)算 4 [xzt7566@centos7-test Downloads]$ echo "$((12/4))" 雙圓括號也表示為運(yùn)算 3 [xzt7566@centos7-test Downloads]$ echo "$(pwd)" /home/xzt7566/Downloads
-
定義全局變量
[xzt7566@centos7-test Downloads]$ cat 1.sh #! /bin/bash func () { echo "$v1" v1=200 } v1=100 func 調(diào)用func 可理解為函數(shù) echo "$v1" 顯示使用了func后的值 [xzt7566@centos7-test Downloads]$ bash 1.sh 100 echo "$v1"顯示為剛賦值過的100 200 func中賦值v1=200,之后的顯示為200
-
定義局部變量
[xzt7566@centos7-test Downloads]$ cat 1.sh #! /bin/bash func () { echo "$v1" local v1=200 } v1=100 func echo "$v1" [xzt7566@centos7-test Downloads]$ bash 1.sh 100 100