• 正文
  • 相关推荐
申请入驻 产业图谱

干货 | Linux shell 语法 if [ $? == 0 ] 详细

2024/09/27
12.4万
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

哈喽,大家好,我是小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一下。

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录