您的位置:首页 > 运维架构 > Shell

shell特殊变量

2015-05-20 17:18 239 查看
接下来看一些特殊变量
$? :接收上一条命令的返回状态码,这样的话可以知道上一条命令是否执行成功,
如果上一条命令执行成功的话,这个返回状态码就是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
关注超人学院微信二维码:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: