shell基本應用(二)shell變量的使用

  1. 自定義變量:有系統用戶自己定義的變量,只有用戶自己的shell環境中才有效,也稱爲本地變量,在shell腳本編程時,通常會設置一些特定的自定義變量,以適應程序執行過程中的各種變化,滿足不同的需求。

  2. 定義一個新的變量:

定義變量的格式"變量名=變量值"切記等號兩邊沒有空格,變量名稱需要首字母或者下劃線開頭,名稱中不要包含特殊字符(如+、-、*、/、.、?、%、&、#等)例:定義一個名爲 test的變量(值爲managerweb)和一個名爲installer(值爲publishweb);可以執行以下操作;


[root@dbserver ~]# test=manageweb

[root@dbserver ~]# installer=publishweb


3.查看和引用變量:


[root@dbserver ~]# echo $test $installer

manageweb publishweb


當變量名容易和緊跟後邊的其他字符混淆時,需要添加大括號“{}”將其括起來,否則將確定不了正確的變量名稱,對於未定義的變量,將顯示其爲空值。


[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


今天寫到這,明天寫數值變量的運算。謝謝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章