Shell變量功能(1)

#初步認識和學習BASH
#參考資料 鳥哥的私房菜
#作者  一路向北
#時間   2013-8-7 14:27
#second  BASH learning
#版本  RetHat 4.1.2-48
#內核版本 2.6.18-194.e15
Shell的變量功能:
 所謂變量就是用一個簡單的東西代替一個比較複雜的容易變動的數據。
 所謂的環境變量也就是在我們正確登陸一個用戶名,系統給了我們一個bash的執行程序以便
 我們可以真正的經由bash來和系統通信之前,系統需要一些變量來提供它數據的訪問(或者是
 一些環境的設置參數值,例如是否要顯示彩色等。)這些環境變量包括:PATH/HOME/MAIL/SHELL
 這裏環境變量大寫只是爲了和自定義變量相區別。
 
小結:什麼是變量?
 變量就是以一組文字或者符號等來替代一些設置或者是一串保留的數據。

利用echo查看變量:
 echo $variable 查看變量
 echo $PATH 以下兩個是查看路徑 
 echo ${PATH}
 培養自己舉一反三的能力:聯想到
 echo $HOME //看環境住目錄eg:/home/xwg
 echo $MAIL //郵件路徑 eg:/var/mail/xwg或者/var/spool/mail/xwg
 
修改、設置變量:只需要三部曲
 假設myname在bash中是沒有被設置的
 echo $myname
 myname = xwg
 echo $myname
 xwg //顯示信息xwg此時變量myname的內容就帶有xwg的這個數據了。
 
 由上面可以知道,在bash中,當一個變量名稱尚未被設置時默認的內容爲空。
 下面是變量設置的規則:
 1、變量與變量內容以一個等號“=”連接,
 2、等號兩邊不能直接接空格
 3、變量名稱只能是英文字母或者數字,但是開頭字符不能是數字
 4、變量內容若有空格符可以使用雙引號或者單引號將變量的內容結合起來,
 但是:
 雙引號內的特殊字符如果$等,可以保持原本的特性
 eg:終端內直接鍵入
 var=“lang is $LANG”
 echo $var
 得到lang is zh_CN.UTF-8
 同樣的如果lang is $LANG用單引號的話,就只能得到lang is zh_CN.UTF-8
 5、可以用轉義字符“\”將特殊符號如【[ENTER]、$、\、空格符、!等】
 6、??? 用“version=$(uname -r)”查看內核參數
  echo $version根本就沒有結果???
 7、如果該變量爲了增加變量內容時,則可以用“$變量名稱”或者${變量}累加內容
 eg:“PATH="$PATH":/home/bin”  //試驗過,但是顯示說找不到目錄
 8、如果該變量需要在其他子進程執行,則需要以export來使變量變成環境變量
 eg:“export PATH”   //不理解?
 9、通常大寫字符爲系統默認變量,自行設置變量可以使用小寫字符,方便判斷。
 10、取消變量的方法使用:
  unset+變量名稱
 eg:取消myname的設置:unset myname
設置變量案例:
 1、在PATH這個變量中累加 /home/dmtsai/bin這個目錄,介紹三種方法:
  PATH=$PATH:/home/dmtsai/bin
  PATH="$PATH":/home/dmtsai/bin
  PATH=${PATH}:/home/dmtsai/bin
  看一眼:
  echo $PATH
 2、如何讓自己設置的變量用到下一個shell中
  name=xwg //設置變量
  echo $name //顯示xwg
  bash   //進入到所謂的子進程中
  echo $name //子進程:再次echo一下,沒有剛纔設置的內容
  exit  //離開子進程
  export name //
  bash  //進入子進程
  echo $name //子進程:在這裏執行,有了
  exit
 所謂的子進程就是在目前的這個shell的情況下去打開另一個新的shell,新的shell
 就是子進程。在一般情況下,父進程的自定義變量是無法通過子進程內使用的。
 但是通過export將變量變成環境變量後就能夠在子進程下面使用了。
 
 3、如何進入到你目前內核的模塊目錄:
 cd /lib/modules/`uname -r`/kernel
 cd /lib/modules/$(uname -r)/kernel
 uname -r 可以取得版本的基本信息,用cd命令就能夠順利進入目前內核的驅動程序
 所放置的位置。
 上面做了兩次操作:
 第一步是先進行反單引號內的操作uname -r,得到內核版本信息
 第二步是將上述的結果帶入原來的命令。
 此處就可以看到反單引號的威力了,``中的內容會被先執行,上例和下例都能說明:
 ls -l `locate crontab`  //查看每個crontab相關文件名的權限
 如果經常用到一個目錄的話比如  cd /home/xwg/accept/unix有兩個方法簡化你的做法:
 法一:
 利用別名alias cdd="cd /home/xwg/accept/unix/linux/learn",但是這種方法有一個缺點,
 就是能夠在其他用戶上面使用,換個終端就不能用了
 法二:
 設置變量,
 work="cd /home/xwg/accept/unix/linux/learn"
 cd $work //用export可以實現子進程的沿用,上面所述(具體功能尚需探討)
 ”version=$(uname -r)“替代”version=`uname -r`“比較好,不容易看錯或者打錯。

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