在写脚本时,经常遇到这样的问题:如何获取当前进程号,脚本执行过的命令的进程号?如何获取当前时间?如何得到参数个数?如何得到脚本中各命令的返回信息?。。。。其实这些信息都能轻松从shell预定义的一些特殊变量获得,下面总结了一些常用的。
特殊的shell变量:
$0
获取当前执行的shell脚本的文件名
$n 获取当前执行的shell脚本的第n个参数值,n=1..9
$* 获取当前shell的所有参数 “$1
$2 $3 …注意与$#的区别
$# 获取当前shell命令行中参数的总个数
$$ 获取当前shell的进程号(PID)
$!
执行上一个指令的PID
$? 获取执行的上一个指令的返回值(也就是main()的返回值,通常0 为成功, 非0零为失败)
$@
这个程序的所有参数 “$1″ “$2″ “$3″ “…”
例子:
[zj@test]#
cat test.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″ “…” :’ $@
脚本执行结果
(大家仔细看):
[zj@test]# sh test.sh 参数1
参数2 参数3
$0
获取当前执行的shell脚本的文件名: test.sh
$n 获取当前执行的shell脚本的第n个参数值,n=1..9: $1=参数1
$2=参数2 $3=参数3
$*
获取当前shell的所有参数 “$1 $2 $3 …注意与$#的区别: 参数1
参数2 参数3
$# 获取当前shell命令行中参数的总个数: 3
$$
获取当前shell的进程号(PID): 2162
$!
执行上一个指令的PID : 2163
$?
获取执行的上一个指令的返回值 : 0
$@
这个程序的所有参数 “$1″ “$2″ “$3″ “…” : 参数1
参数2 参数3
[zj@test]# sh test.sh zj aa bb$0
获取当前执行的shell脚本的文件名: test.sh
$n 获取当前执行的shell脚本的第n个参数值,n=1..9: $1=zj
$2=aa $3=bb$* 获取当前shell的所有参数 “$1 $2 $3 …注意与$#的区别:zj aa bb$# 获取当前shell命令行中参数的总个数: 3$$
获取当前shell的进程号(PID): 2120$!
执行上一个指令的PID : 2121$?
获取执行的上一个指令的返回值 : 0$@
这个程序的所有参数 “$1″ “$2″ “$3″ “…” : zj aa
bb