自定義變量:有系統用戶本身定義的變量,只有用戶本身的shell環境中才有效,也稱爲本地變量,在shell腳本編程時,一般會設置一些特定的自定義變量,以適應程序執行過程當中的各類變化,知足不一樣的需求。web
定義一個新的變量:shell
定義變量的格式"變量名=變量值"切記等號兩邊沒有空格,變量名稱須要首字母或者下劃線開頭,名稱中不要包含特殊字符(如+、-、*、/、.、?、%、&、#等)例:定義一個名爲 test的變量(值爲managerweb)和一個名爲installer(值爲publishweb);能夠執行如下操做;編程
[root@dbserver ~]# test=manageweb
bash
[root@dbserver ~]# installer=publishwebide
3.查看和引用變量:
命令行
[root@dbserver ~]# echo $test $installer
server
manageweb publishweb進程
當變量名容易和緊跟後邊的其餘字符混淆時,須要添加大括號「{}」將其括起來,不然將肯定不了正確的變量名稱,對於未定義的變量,將顯示其爲空值。ci
[root@dbserver ~]# echo $test4.5
字符串
.5
[root@dbserver ~]# echo ${test}4.5
manageweb4.5
4.變量賦值的特殊操做
1)雙引號(")
雙引號主要起界定字符串的做用,特別是當要賦值的內容中包含空格時,必需要用雙引號括起來,其餘狀況下雙引號一般能夠省略,例:若將「manageweb 6.9」賦值給變量test,應執行「test=manageweb 6.9」
[root@dbserver ~]# test=manageweb 6.9
-bash: 6.9: command not found
[root@dbserver ~]# test="manageweb 6.9"
[root@dbserver ~]# echo $test
manageweb 6.9
在雙引號範圍內,使用$符號能夠應用其餘變量的值,例:
[root@dbserver ~]# TYPE="ACCP $installer"
[root@dbserver ~]# echo $TYPE
ACCP publishweb
2)單引號(')
當要賦值的內容包含「$、"、\」等具備特殊含義的字符時,因使用單引號括起來,在單引號的範圍內,將沒法引用其餘變量的值,任何字符均做爲普通字符看待但賦值內容中包括含單引號時,需使用"\`"符號進行轉義,以避免衝突。
[root@dbserver ~]# kill='ACCP $installer' //$符號不能應用變量
[root@dbserver ~]# echo $kill //原樣輸出字符串
ACCP $installer
3)反撇號(`)
反撇號主要用於命令替換,容許將執行的某個命令的屏幕輸出結果賦值給變量,反撇號括起來的範圍必須是可以執行的命令行,不然會出錯,例:
[root@dbserver ~]# ls -lh `which useradd`
-rwxr-x---. 1 root root 101K Aug 2 2011 /usr/sbin/useradd
4)read命令
read命令用來提示用戶輸入信息,從而實現簡單的交互過程,執行時將從標準輸入設備(鍵盤)讀入一行內容,並以空格爲分隔符,將讀入的各字段挨個賦值給指定的變量,若指定的變量只有一個,則將整行內容賦值給此變量。例:執行如下操做將會等待用戶輸入文字,並將輸入的內容賦值給變量ToDor1
[root@dbserver ~]# read ToDir1
/opt/backup
[root@dbserver ~]# echo $ToDir1
/opt/backup
爲了使交互式操做的界面更加友好,提升易用性,read命令能夠結合「-p」選項來設置提示信息。
[root@dbserver ~]# read -p "Please specify the backup path:" ToDir2
Please specify the backup path:/opt/backup
[root@dbserver ~]# echo $ToDir2
/opt/backup
5.設置變量的做用範圍:
默認狀況下新定義的變量只在當前shell環境中有效,所以稱爲局部變量。當進入到子進程或者新的子shell環境時,局部變量將沒法再使用了。
[root@dbserver ~]# echo $test $installer
manageweb 6.9 publishweb
[root@dbserver ~]# bash
[root@dbserver ~]# echo $test $installer
[root@dbserver ~]#
爲了使用戶定義的變量在全部的shell環境中可以繼續使用,減小重複設置工做,能夠經過內部命令export將指定變量導出爲「全局變量」。例:
[root@dbserver ~]# echo $test $installer
manageweb publishweb
[root@dbserver ~]# export test installer
[root@dbserver ~]# bash
[root@dbserver ~]# echo "$test $installer"
manageweb publishweb
今天寫到這,明天寫數值變量的運算。謝謝