1、位置变量 (1)$0 ==>取文件名 [root@thzzc1994 ~]# cat test.sh echo $0 [root@thzzc1994 ~]# sh test.sh test.sh [root@thzzc1994 ~]# sh ~/test.sh /root/test.sh 说明:执行脚本时脚本名字前面有路径则$0输出路径。前面有路径则要输出路径。也可用命令dirname和basename取值。 (2)$#和$n
$# ==>取参数的个数 说明:""里只能算一个变量,这里设置三个变量先。 [root@thzzc1994 ~]# set -- "I am" ugly oldboy [root@thzzc1994 ~]# echo $# 3 [root@thzzc1994 ~]# echo $1 I am [root@thzzc1994 ~]# echo $2 ugly [root@thzzc1994 ~]# echo $3 oldboy (3)$与$@的区别 [root@thzzc1994 ~]# echo $ I am ugly oldboy [root@thzzc1994 ~]# echo $@ I am ugly oldboy [root@thzzc1994 ~]# for i in "$*";do echo $i;done I am ugly oldboy ==>可知$*就只有一个参数 [root@thzzc1994 ~]# for i in "$@";do echo $i;done I am ugly oldboy ==>$@有四个参数 2、进程状态变量 (1)$? 0为成功,非0为失败 [root@thzzc1994 ~]# date 2018年 05月 01日 星期二 18:58:42 CST [root@thzzc1994 ~]# echo $? 0[root@thzzc1994 ~]# rm / rm: 无法删除"/": 是一个目录 [root@thzzc1994 ~]# echo $? 1 在企业场景中,$?返回值的用法如下: ①判断命令、脚本或函数等程序是否执行成功 ②在脚本中调用exit n,会返回这个数字给$?。 ③在函数里,通过return n把这个数字以函数返回值给$?。 (2)$$ 获取进程号 验证方法①:[root@thzzc1994 ~]# cat testPid.sh echo $$ [root@thzzc1994 ~]# sh testPid.sh & [3] 3357 [root@thzzc1994 ~]# 3357

[3]+ Done sh testPid.sh ②(推荐):[root@thzzc1994 ~]# su - thzzc [thzzc@thzzc1994 ~]$ echo $$ 2544 [thzzc@thzzc1994 ~]$ kill -9 2544 [root@thzzc1994 ~]# (3)$_ 上个命令的最后一个参数(不止参数,命令也一样,应该是单词就行) [root@thzzc1994 ~]# echo && echo $_

echo [root@thzzc1994 ~]# echo kobe && echo $_ kobe kobe (4)$! 获取上个脚本的进程号 [root@thzzc1994 ~]# cat testPid.sh sleep 100 [root@thzzc1994 ~]# ps -ef |grep testPid root 6557 6311 0 15:48 pts/0 00:00:00 grep testPid [root@thzzc1994 ~]# sh testPid.sh & [1] 6558 [root@thzzc1994 ~]# echo $! 6558 总结:位置变量$0 $n $# $* $@ 5个和进程变量$$ $! $? $_ 4个,都记下来会对shell编程有很大帮助。