########################
總結幾個特殊的shell變數:
########################
############################################################
#
#http://hi.baidu.com/xece/modify/blog/75327e382149dae23b87ce5a
############################################################
特殊的shell變數:
$0 擷取當前執行的shell指令碼的檔案名稱
$n 擷取當前執行的shell指令碼的第n個參數值,n=1..9
$* 擷取當前shell的所有參數 “$1 $2 $3 …注意與$#的區別
$# 擷取當前shell命令列中參數的總個數
$$ 擷取當前shell的進程號(PID)
$! 執行上一個指令的PID
$? 擷取執行的上一個指令的傳回值(0 為成功, 非零為失敗)
$@ 這個程式的所有參數 “$1″ “$2″ “$3″ “…”
舉例(通過指令碼舉例,大家也可以一行行執行測試):
[ryan@etiantian test]# cat etiantian.sh
echo ‘$0 擷取當前執行的shell指令碼的檔案名稱:’$0
echo ‘$n 擷取當前執行的shell指令碼的第n個參數值,n=1..9:’ ‘$1′=$1 ‘$2′=$2 “\$3=$3″
echo ‘$* 擷取當前shell的所有參數 “$1 $2 $3 …注意與$#的區別:’$*
echo ‘$# 擷取當前shell命令列中參數的總個數:’$#
echo ‘$$ 擷取當前shell的進程號(PID):’$$
sleep 2 &
echo ‘$! 執行上一個指令的PID :’$!
echo ‘$? 擷取執行的上一個指令的傳回值:’$?
echo ‘$@ 這個程式的所有參數 “$1″ “$2″ “$3″ “…”:’$@
指令碼執行結果(大家仔細看):
[ryan@etiantian test]# sh etiantian.sh 參數1 參數2 參數3
$0 擷取當前執行的shell指令碼的檔案名稱: etiantian.sh
$n 擷取當前執行的shell指令碼的第n個參數值,n=1..9: $1=參數1 $2=參數2 $3=參數3
$* 擷取當前shell的所有參數 “$1 $2 $3 …注意與$#的區別: 參數1 參數2 參數3
$# 擷取當前shell命令列中參數的總個數: 3
$$ 擷取當前shell的進程號(PID): 2062
$! 執行上一個指令的PID : 2063
$? 擷取執行的上一個指令的傳回值: 0
$@ 這個程式的所有參數 “$1″ “$2″ “$3″ “…”: 參數1 參數2 參數3
[ryan@etiantian test]# sh etiantian.sh ryan jeacen david
$0 擷取當前執行的shell指令碼的檔案名稱: etiantian.sh
$n 擷取當前執行的shell指令碼的第n個參數值,n=1..9: $1=ryan $2=jeacen $3=david
$* 擷取當前shell的所有參數 “$1 $2 $3 …注意與$#的區別: ryan jeacen david
$# 擷取當前shell命令列中參數的總個數: 3
$$ 擷取當前shell的進程號(PID): 2160
$! 執行上一個指令的PID : 2161
$? 擷取執行的上一個指令的傳回值: 0
$@ 這個程式的所有參數 “$1″ “$2″ “$3″ “…”: ryan jeacen david