Shell變數功能(1) 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`“比較好,不容易看錯或者打錯。