1.$0 获取当前执行的shell脚本的文件名,包括路径。 [root@usr001 ~]# vi test.sh [root@usr001 ~]# cat test.sh echo $0 [root@usr001 ~]# sh test.sh test.sh [root@usr001 ~]# pwd /root [root@usr001 ~]# sh /root/test.sh /root/test.sh [root@usr001 ~]# 2.$n 获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0 时表示脚本的文件名,如果n大于9就要用大括号括起来${10}. [root@usr001 ~]# seq -s " $" 0 10 0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 [root@usr001 ~]# seq 9|sed 's#[0-9]#$&#g' $1 $2 $3 $4 $5 $6 $7 $8 $9

[root@usr001 ~]# seq -s " $" 1 10|sed '/1/s/1/$1/' $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 [root@usr001 ~]# seq -s " $" 1 10|sed '/1/s/2/$1/' 1 $$1 $3 $4 $5 $6 $7 $8 $9 $10 [root@usr001 ~]# seq -s " $" 1 10|sed '/1/s/3/$1/' 1 $2 $$1 $4 $5 $6 $7 $8 $9 $10 [root@usr001 ~]# [root@usr001 ~]# seq -s " $" 1 10|sed '/1/s/10/{10}/'|sed

'/1/s/1/$1/' $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} [root@usr001 ~]# [root@usr001 ~]# sh n.sh kk ff kk ff [root@usr001 ~]# sh n.sh seq -s " " 1 10 1 2 3 4 5 6 7 8 9 10 [root@usr001 ~]# sh n.sh seq -s " " 1 9 1 2 3 4 5 6 7 8 9 [root@usr001 ~]# sh n.sh 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 [root@usr001 ~]# 3.$# 获取当前shell命令行中参数的总个数。 [root@usr001 ~]# vi n.sh [root@usr001 ~]# sh n.sh 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 8 [root@usr001 ~]# sh n.sh seq -s " " 1 9 1 2 3 4 5 6 7 8 9 9 [root@usr001 ~]# sh n.sh "1 2 3 4 5 6 7 8" 1 2 3 4 5 6 7 8 1 [root@usr001 ~]# cat b.sh dirname $0 basename $0 [root@usr001 ~]# sh b.sh . b.sh [root@usr001 ~]# sh /root/b.sh /root b.sh 4.$? 获取执行上一个指令的返回值(0为成功,非零为失败) 2 权限拒绝 1~125 表示运行失败,脚本命令、系统命令错误或参 数传递错误; 126 找到该命令了,但是无法执行。 127 未找到要 运行的命令; 128 命令被系统强制结束。 提示:在脚本调用,一般用exit 0,函数return 0. 5.$$ 获取当前shell的进程号(PID)。 [root@usr001 ~]# cat a.log |cut -c1-4|xargs kill

[root@usr001 ~]# cat echo '1.' $0 echo '2.' '$1'=$1 '$2'=$2 "$3=$3" echo '3.' $* echo '4.' $# echo '5.' $$ sleep 2 & echo '6.' $! echo '7.' $? echo '8.' $@ echo '9.' $_ [root@usr001 ~]# sh xiaoming hanmei lilei 1. 2. $1=xiaoming $2=hanmei $3=lilei 3. xiaoming hanmei lilei 4. 3 5. 3576 6. 3577 7. 0 8. xiaoming hanmei lilei 9. lilei [root@usr001 ~]#