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

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

  2. 定義一個新的變量: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


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

相關文章
相關標籤/搜索