先不要管Shell的版本,來看看Shell 變量,在Shell中有三種變量:系統(tǒng)變量,環(huán)境變量,用戶變量。其中用戶變量在編程過程中使用最多,系統(tǒng)變量在對參數(shù)判斷和命令返回值判斷會使用,環(huán)境變量主要是在程序運行的時候需要設置。
1 系統(tǒng)變量Shell常用的系統(tǒng)變量并不多,但卻十分有用,特別是在做一些參數(shù)檢測的時候。下面是Shell常用的系統(tǒng)變量
#!/bin/sh #This file is used to explain the shell system variable. echo "the number of parameter is $# "; echo "the return code of last command is $?"; echo "the script name is $0 "; echo "the parameters are $* "; echo "\$1 = $1 ; \$2 = $2 "; 下面是運行結(jié)果: BeautifierPlugin Error: Unable to handle "bash" syntax. -bash-2.05b$ ./chapter2.1.sh winter stlchina the number of parameter is 2 the return code of last command is 0 the script name is ./chapter2.1.sh the parameters are winter stlchina $1 = winter ; $2 = stlchina 這個例子太簡單了,一點也不實用,下面來個實用的,如果你看不懂,沒有關系,后面的內(nèi)容會有詳細解釋。 BeautifierPlugin Error: Unable to handle "bash" syntax. #!/bin/sh if [ $# -ne 2 ] ; then echo "Usage: $0 string file"; exit 1; fi grep $1 $2 ; if [ $? -ne 0 ] ; then echo "Not Found \"$1\" in $2"; exit 1; fi echo "Found \"$1\" in $2"; 上面的例子中使用了$0 $1 $2 $# $? 等變量,下面是程序的解釋:
下面運行的例子: BeautifierPlugin Error: Unable to handle "bash" syntax. ./chapter2.2.sh usage chapter2.2.sh Not Found "usage" in chapter2.2.sh -bash-2.05b$ ./chapter2.2.sh Usage chapter2.2.sh echo "Usage: $0 string file"; Found "Usage" in chapter2.2.sh 2 Shell用戶變量2.1 基礎不管系統(tǒng)變量有多少,對于需求來說,總是不夠的。用戶變量是最常用到的變量,使用也十分簡單。用戶定義的變量必須由字母數(shù)字及下劃線組成,并且變量名的第一個字符不能為數(shù)字, 與其它UNIX名字一樣,變量名是大小寫敏感的. 對于用戶變量,用戶可按如下方式賦值: BeautifierPlugin Error: Unable to handle "bash" syntax. name="Winter" name="Winter" WINTER=$name echo "Hello $WINTER !" 這里需要注意一點:變量和‘=‘之間不要有空格,‘=‘和賦值也不要有空格,否則shell不會認為變量被定義。掌握了基本的使用方法,你可以完全開始你的編程工作了。不過有時候需要未雨綢繆,下面介紹用戶變量的一些技巧。 2.2 使用技巧也可以用變量和其他字符組成新的字,這時可能需要把變量用{}括起,如: BeautifierPlugin Error: Unable to handle "bash" syntax.SAT=Satur echo Today is ${SAT}day 有時候為了避免變量名和別的字符產(chǎn)生混淆,你最好養(yǎng)成習慣把變量名用{}括起來。 對于未賦值的變量, Shell以空值對待, 用戶也可以用unset命令清除給變量賦的值.看一個例子: BeautifierPlugin Error: Unable to handle "bash" syntax. #!/bin/sh echo "a=$a" ; a=2 echo "a=$a" ; unset a echo "a=$a" ; -bash-2.05b$ ./test.sh a= a=2 a= #!/bin/sh echo "a=$a" ; #下面增加了readonly readonly a=2 echo "a=$a" ; unset a echo "a=$a" ; -bash-2.05b$ ./test.sh a= a=2 a=2 2.3 shell 中的數(shù)組shell變量中還能設置數(shù)組,但是不同的shell版本有不同數(shù)組賦值方法,而bourne shell 中不支持數(shù)組方式。因此,如果不是十分需要,還是建議你不要使用數(shù)組。若你的數(shù)據(jù)結(jié)構(gòu)十分復雜,必須要使用數(shù)組,那么我建議你還是選擇別的語言吧,shell不是萬能的。shell有兩種賦值方式,第一種是直接用下標賦值: BeautifierPlugin Error: Unable to handle "bash" syntax. name[0]="Tom" name[1]="Tomy" name[2]="John" ... #!/usr/local/bin/bash name=("Tom" "Tomy" "John") for i in 0 1 2 do echo $i:${name[$i]} ; done; -bash-2.05b$ ./test.sh 0:Tom 1:Tomy 2:John 3 shell 環(huán)境變量shell 環(huán)境變量是所有shell 程序都會接受的參數(shù)。shell程序運行時,都會接收一組變量,這組變量就是環(huán)境變量。常用的環(huán)境變量:
這些變量,要關注的最多的就是PATH, 其重要性不要我說了吧? 如果你希望把你定義的變量讓其他所有的shell程序都能使用,也就是定義新的環(huán)境變量。你只要使用export關鍵詞就可以了。例如: BeautifierPlugin Error: Unable to handle "bash" syntax. export MY_NAME=Winter export PATH=/home/winter/bin:$PATH ~/.bash_profile |
|