加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

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

2023/06/26
5.7万
阅读需 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一下。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
SN74AHC1G14DCKRG4 1 Texas Instruments Single 2-V to 5.5-V inverter with Schmitt-Trigger inputs 5-SC70 -40 to 125

ECAD模型

下载ECAD模型
$0.33 查看
TLP185(GB,E(O 1 Toshiba America Electronic Components Optocoupler DC-IN 1-CH Transistor DC-OUT 4-Pin DIP SMD

ECAD模型

下载ECAD模型
$0.1 查看
FCLF8520P2BTL 1 Finisar Corporation Transceiver, 1250Mbps(Tx), 1250Mbps(Rx), SFP Connector, ROHS COMPLIANT PACKAGE
$66.19 查看

相关推荐

电子产业图谱

记录和分享C/C++、Linux、ARM、Android、IoT相关知识。技术相伴于生活和成长,愿你我永为少年,心中有火,眼中有光,始保热情。