在寫腳本時,經(jīng)常遇到這樣的問題:如何獲取當前進程號,腳本執(zhí)行過的命令的進程號?如何獲取當前時間?如何得到參數(shù)個數(shù)?如何得到腳本中各命令的返回信息?。。。。其實這些信息都能輕松從shell預(yù)定義的一些特殊變量獲得,下面總結(jié)了一些常用的。
特殊的shell變量:
$0 獲取當前執(zhí)行的shell腳本的文件名
$n 獲取當前執(zhí)行的shell腳本的第n個參數(shù)值,n=1..9
$* 獲取當前shell的所有參數(shù) “$1 $2 $3 …注意與$#的區(qū)別
$# 獲取當前shell命令行中參數(shù)的總個數(shù)
$$ 獲取當前shell的進程號(PID)
$! 執(zhí)行上一個指令的PID
$? 獲取執(zhí)行的上一個指令的返回值(也就是main()的返回值,通常0 為成功, 非0零為失敗)
$@ 這個程序的所有參數(shù) “$1″ “$2″ “$3″ “…”
例子:
[zj@test]# cat test.sh
echo ‘$0 獲取當前執(zhí)行的shell腳本的文件名:’ $0
echo ‘$n 獲取當前執(zhí)行的shell腳本的第n個參數(shù)值,n=1..9:’ ‘$1′=$1 ‘$2′=$2 “\$3=$3″
echo ‘$* 獲取當前shell的所有參數(shù) “$1 $2 $3 …注意與$#的區(qū)別:’ $*
echo ‘$# 獲取當前shell命令行中參數(shù)的總個數(shù):’ $#
echo ‘$$ 獲取當前shell的進程號(PID):’ $$
sleep 2 &
echo ‘$! 執(zhí)行上一個指令的PID :’ $!
echo ‘$? 獲取執(zhí)行的上一個指令的返回值 :’ $?
echo ‘$@ 這個程序的所有參數(shù) “$1″ “$2″ “$3″ “…” :’ $@
腳本執(zhí)行結(jié)果 (大家仔細看):
[zj@test]# sh test.sh 參數(shù)1 參數(shù)2 參數(shù)3
$0 獲取當前執(zhí)行的shell腳本的文件名: test.sh
$n 獲取當前執(zhí)行的shell腳本的第n個參數(shù)值,n=1..9: $1=參數(shù)1 $2=參數(shù)2 $3=參數(shù)3
$* 獲取當前shell的所有參數(shù) “$1 $2 $3 …注意與$#的區(qū)別: 參數(shù)1 參數(shù)2 參數(shù)3
$# 獲取當前shell命令行中參數(shù)的總個數(shù): 3
$$ 獲取當前shell的進程號(PID): 2162
$! 執(zhí)行上一個指令的PID : 2163
$? 獲取執(zhí)行的上一個指令的返回值 : 0
$@ 這個程序的所有參數(shù) “$1″ “$2″ “$3″ “…” : 參數(shù)1 參數(shù)2 參數(shù)3
[zj@test]# sh test.sh zj aa bb
$0 獲取當前執(zhí)行的shell腳本的文件名: test.sh
$n 獲取當前執(zhí)行的shell腳本的第n個參數(shù)值,n=1..9: $1=zj $2=aa $3=bb
$* 獲取當前shell的所有參數(shù) “$1 $2 $3 …注意與$#的區(qū)別: zj aa bb
$# 獲取當前shell命令行中參數(shù)的總個數(shù): 3
$$ 獲取當前shell的進程號(PID): 2120
$! 執(zhí)行上一個指令的PID : 2121
$? 獲取執(zhí)行的上一個指令的返回值 : 0
$@ 這個程序的所有參數(shù) “$1″ “$2″ “$3″ “…” : zj aa bb