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