

干货 | Linux shell 语法 if [ $? == 0 ] 详细
source link: https://www.eefocus.com/embedded/519211
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Linux shell 语法 if [ $? == 0 ] 详细-嵌入式系统-与非网
哈喽,大家好,我是小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一下。
版权声明:与非网经原作者授权转载,版权属于原作者。文章观点仅代表作者本人,不代表与非网立场。文章及其配图仅供工程师学习之用,如有侵权或者其他问题,请联系本站作侵删。 侵权投诉
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK