哈喽,大家好,我是小G。
linux shell 功能很强大,平时工作主要在linux下做开发,不管是调试问题、还是自动化测试需要,或者是阅读项目代码中的编译构建脚本,基本上都避免不了shell 语法规则的学习。今天记录一篇 linux shell 语法笔记。之前其他所有 linux命令系列 文章,可见文章末尾。
if [ $? == 0 ]
语法很简单,
1、 $?
是上一条程序指令执行是否成功的标志,如果执行成功则$? 值为0,否则值不为0 ;
2、$?
最大的价值,就是可以用来判断上一个条程序指令执行是否成功,利用这样的特性,就会很方便我们干一些 if...else...的事情;
3、 if [ $? == 0 ]
等价于 if [ $? -eq 0 ] 。
所以, if [ $? == 0 ]
这条语句,主要就是可以用来判断上一个命令执行后的退出状态。
在平时编写 shell 脚本的时候,是经常会看到有使用if
语句以及$?
的,语法简单而且非常有用。如:
if [ "$?" != 0 ] ; then echo " last cmd is failed" exit 1 fi
再如,附一个借助 $?
,实现自动删除不必要文件的例子:
#! /bin/bash My_DIR='/temp/test/' cd $My_DIR if [ $? -eq 0 ]; then # 检查cd命令是否成功,如果成功才执行rm命令 rm -rf *txt else 'test directory is not exist' # 如果cd命令运行失败,则打印一个错误信息,并退出,返回状态码1 exit 1 fi
最后,附个其他常见特殊符号和含义:
$0: 脚本本身,即脚本的名字 $*: 以一对双引号给出参数列表 $@: 将各个参数分别加双引号返回 $#: 参数的个数 $_: 代表上一个命令的最后一个参数 $$: 代表所在命令的PID $!: 代表最后执行的后台命令的PID $?: 代表上一个命令执行后的退出状态
shell真的很强大,熟悉了shell感觉就是生产力,最近工作中还有碰到一个难搞的低概率性重启死机异常问题,最后为了复现、修改、压测,也是借助于Linux shell 脚本最终搞定的。解决死机问题时涉及的知识点比较多,后续有时间把核心的 Linux shell 脚本实现看是否能抽离出来,再整理一下,写一篇文章吧,Mark一下。