Linux下的bash
原创
©著作权归作者所有:来自51CTO博客作者jenslee的原创作品,请联系作者获取转载授权,否则将追究法律责任
範例一:設定一變數 name ,且內容為 VBird
[dmtsai@study ~]$ 12name=VBird
bash: 12name=VBird: command not found... <==螢幕會顯示錯誤!因為不能以數字開頭!
[dmtsai@study ~]$ name = VBird <==還是錯誤!因為有空白!
[dmtsai@study ~]$ name=VBird <==OK 的啦!
範例二:承上題,若變數內容為 VBird's name 呢,就是變數內容含有特殊符號時:
[dmtsai@study ~]$ name=VBird's name
# 單引號與雙引號必須要成對,在上面的設定中僅有一個單引號,因此當你按下 enter 後,
# 你還可以繼續輸入變數內容。這與我們所需要的功能不同,失敗啦!
# 記得,失敗後要復原請按下 [ctrl]-c 結束!
[dmtsai@study ~]$ name="VBird's name" <==OK 的啦!
# 指令是由左邊向右找→,先遇到的引號先有用,因此如上所示, 單引號變成一般字元!
[dmtsai@study ~]$ name='VBird's name' <==失敗的啦!
# 因為前兩個單引號已成對,後面就多了一個不成對的單引號了!因此也就失敗了!
[dmtsai@study ~]$ name=VBird\'s\ name <==OK 的啦!
# 利用反斜線 (\) 跳脫特殊字元,例如單引號與空白鍵,這也是 OK 的啦!
範例三:我要在 PATH 這個變數當中『累加』:/home/dmtsai/bin 這個目錄
[dmtsai@study ~]$ PATH=$PATH:/home/dmtsai/bin
[dmtsai@study ~]$ PATH="$PATH":/home/dmtsai/bin
[dmtsai@study ~]$ PATH=${PATH}:/home/dmtsai/bin
# 上面這三種格式在 PATH 裡頭的設定都是 OK 的!但是底下的例子就不見得囉!
範例四:承範例三,我要將 name 的內容多出 "yes" 呢?
[dmtsai@study ~]$ name=$nameyes
# 知道了吧?如果沒有雙引號,那麼變數成了啥?name 的內容是 $nameyes 這個變數!
# 呵呵!我們可沒有設定過 nameyes 這個變數吶!所以,應該是底下這樣才對!
[dmtsai@study ~]$ name="$name"yes
[dmtsai@study ~]$ name=${name}yes <==以此例較佳!
範例五:如何讓我剛剛設定的 name=VBird 可以用在下個 shell 的程序?
[dmtsai@study ~]$ name=VBird
[dmtsai@study ~]$ bash <==進入到所謂的子程序
[dmtsai@study ~]$ echo $name <==子程序:再次的 echo 一下;
<==嘿嘿!並沒有剛剛設定的內容喔!
[dmtsai@study ~]$ exit <==子程序:離開這個子程序
[dmtsai@study ~]$ export name
[dmtsai@study ~]$ bash <==進入到所謂的子程序
[dmtsai@study ~]$ echo $name <==子程序:在此執行!
VBird <==看吧!出現設定值了!
[dmtsai@study ~]$ exit <==子程序:離開這個子程序
什麼是『子程序』呢?就是說,在我目前這個 shell 的情況下,去啟用另一個新的 shell ,新的那個 shell 就是子程序啦!在一般的狀態下,父程序的自訂變數是無法在子程序內使用的。但是透過 export 將變數變成環境變數後,就能夠在子程序底下應用了
範例六:如何進入到您目前核心的模組目錄?
[dmtsai@study ~]$ cd /lib/modules/`uname -r`/kernel
[dmtsai@study ~]$ cd /lib/modules/$(uname -r)/kernel # 以此例較佳!
範例七:取消剛剛設定的 name 這個變數內容
[dmtsai@study ~]$ unset name