shell特殊变量

接下来看一些特殊变量
$? :接收上一条命令的返回状态码,这样的话可以知道上一条命令是否执行成功,
如果上一条命令执行成功的话,这个返回状态码就是0,如果上一条命令执行失败的话,返回值是1-255之间的某个值,也就是说,成功的返回值只有一个,失败的返回值是各种各样的。

执行ls 命令 再执行echo $?  状态码为0
执行lkkk命令,再执行echo $?  状态码为127





$#:参数个数
一般我们在执行一些脚本的时候,如果后面指定的参数数量不够,那么脚本就会给一个提示,说参数个数不够,那它是怎么判断的呢。就是使用$#来判断的。
例如
写一个test.sh脚本,里面写下面代码
echo $#

这样在调用test.sh脚本的时候如果后面不传递参数,则返回值为0,如果指定几个参数,则返回值就是几。


$*   $@  :获取脚本后面指定的所有参数
这两个命令都可以获取指定脚本后面的所有参数,在这里,先认为这两个命令的执行结果一致,具体有什么不同,下面具体用到的时候会分析。

写一个test.sh脚本
echo  $*
echo  $@
这样在执行test.sh脚本的时候,在后面指定参数,test.sha b c  这样的话就会打印两次 a b c 参数,说明刚才那两个命令的执行结果是一致的。


$$:获取当前shell的进程号,
这个东西有什么用呢,这个可以用来实现shell进程自杀。

在shell脚本中使用kill命令,后面跟上这个命令就可以实现进程自杀。
例如:
echo $$
echo "start"
kill  $$
sleep 900000000
echo "end"

或者使用exit也可以退出shell脚本

例如,把上面的kill $$ 替换成exit [num](num表示退出状态码,可以指定或者不指定,不指定默认是0)

更多精彩内容请关注:http://bbs.superwu.cn 

关注超人学院微信二维码:技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。