外圍程序變數可以是全域變數或本地變數。您可以在所有外圍程序中存取全域變數或環境變數。與此相反,本地變數僅顯示於目前的外圍程序中。
要檢視所有環境變數,請使用 printenv 指令。如需特殊變數,請將變數名稱做為引數插入。
printenv PATH
也可以使用 echo 檢視變數︰
echo $PATH
此指令可列印 PATH 變數。要設定本地變數,請使用變數名稱,後面跟上等號,再跟上值︰
PROJECT="SLED"
請不要在等號兩邊插入空格,否則將會出錯。要設定環境變數,請使用 export︰
export NAME="tux"
要移除變數,請使用 unset︰
unset NAME
下表包含了部分可在外圍程序程序檔中使用的常用環境變數︰
表 5-5 有用的環境變數
HOME |
目前使用者的主目錄 |
HOST |
目前的主機名稱 |
LANG |
工具當地化以後,會使用此環境變數指定的語言。也可將英語設定為 C。 |
PATH |
外圍程序的搜尋路徑,即以冒號分隔的目錄清單。 |
PS1 |
指定在每條指令前列印的一般提示 |
PS2 |
指定執行多行指令時列印的輔助提示 |
PWD |
目前的工作目錄 |
USER |
目前的使用者 |
例如,如果您有程序檔 foo.sh,就可以按以下格式執行該程序檔︰
foo.sh "Tux Penguin" 2000
要存取傳送至程序檔的所有引數,您需要使用位置參數。$1 代表第一個引數的位置參數,$2 代表第二個引數的位置參數,依此類推。最多可以使用九個參數。要獲取程序檔名稱,請使用 $0。
下面的程序檔 foo.sh 可列印從 1 到 4 的所有引數︰
#!/bin/sh echo \"$1\" \"$2\" \"$3\" \"$4\"
如果您使用以上引數執行此程序檔,所得結果為︰
"Tux Penguin" "2000" "" ""
變數替代項會從左側或右側將模式套用至變數內容。以下清單包含了可用的語法格式︰
從左側移除最短的相符項︰
file=/home/tux/book/book.tar.bz2 echo ${file#*/} home/tux/book/book.tar.bz2
從左側移除最長的相符項︰
file=/home/tux/book/book.tar.bz2 echo ${file##*/} book.tar.bz2
從右側移除最短的相符項︰
file=/home/tux/book/book.tar.bz2 echo ${file%.*} /home/tux/book/book.tar
從右側移除最長的相符項︰
file=/home/tux/book/book.tar.bz2 echo ${file%%.*} /home/tux/book/book