Shell编程 — 获取指令返回值_HiroGuo的博客-程序员秘密_shell获取命令返回值

技术标签: Shell 返回值  Shell 编程  Shell 指令执行结果  Shell 获取返回状态  

Shell编程 — 获取指令返回值

在实际的使用过程中,经常会遇到使用脚本执行一些需要人工繁琐执行的操作,比如自动编译程序等。那么在自动化脚本中,就需要注意每条指令是否正确执行?如果不正确执行如何中断执行并且提示给用户呢?

退出状态和逻辑运算符的组合
cmake . || exit 1
make || exit 1
./pcl_visualizer_demo

则遇到CMake 或者 Make失败的时候,程序就可以直接中断。

总结:

优点:书写简单,代码少
确定:程序直接中断,不方便提示log

运算符 使用格式 说明
&& expression1 && expression2 逻辑与运算符,当 expression1 和 expression2 同时成立时,整个表达式才成立。如果检测到 expression1 的退出状态为 0,就不会再检测 expression2 了,因为不管 expression2 的退出状态是什么,整个表达式必然都是不成立的,检测了也是多此一举。
|| expression1 || expression2 逻辑或运算符,expression1 和 expression2 两个表达式中只要有一个成立,整个表达式就成立。如果检测到 expression1 的退出状态为 1,就不会再检测 expression2 了,因为不管 expression2 的退出状态是什么,整个表达式必然都是成立的,检测了也是多此一举。
! ! expression1 逻辑非运算符,相当于“取反”的效果。如果 expression 成立,那么整个表达式就不成立;如果 expression 不成立,那么整个表达式就成立。
根据指令的返回值做判断
cmake .
make
if [ $? -ne 0 ];then
	echo " make  -- Faile  : "$?
	exit 0
else
	echo " make  -- Success !"
fi
./pcl_visualizer_demo

$? 获取上一个指令(方法)的退出状态(返回值)

#!/bin/bash
#得到两个数相加的和
function add(){
    
    return `expr $1 + $2`
}
add 23 50  #调用函数
echo $?  #获取函数返回值
结果:73

总结

优点:可以用户编辑log输出,以便定位查看
确定:需要额外的代码编写

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/HeroGuo_JP/article/details/109310270

智能推荐

宝塔面板开启SSL并换成自己域名证书的方法_匪六哥的博客-程序员秘密

宝塔面板(免费版 5.9.1),开启面板SSL后,浏览器显示不安全的链接。我们将其修改为网站绑定的域名证书即可,方法如下:预备:域名网站已有证书,并设置SSL。网站证书在 /www/server/panel/vhost/ssl/域名  目录下。一、面板设置,启动“面板SSL”面板SSL证书生成并放置在 /www/server/panel/ssl 下二、找到虚拟主机配置文件(a...

一、注册功能怎么测试_设计用户注册测试点_小志老师的博客-程序员秘密

注册功能测试:首先要分析需求,web端/APP端?账号的规则?1、账号为手机号:利用等价类边界值划分有效等价类和无效等价类;如图所示:功能测试用例:(1)输入已注册过的手机号获取验证码再次注册;(2)输入不符合手机号规则的号码获取验证码进行注册;(3)输入欠费的手机号获取验证码进行注册;(4)输入10位数字获取验证码进行注册;(5)输入12位数字获取验证码进行注册;(6)输入1...

easypoi自定义模板导出+一对多表关系的导出+自动合并相同单元格+史上最全_poimergecellutil_MikuHoney的博客-程序员秘密

1、项目环境<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.2.RELEASE</version> <relativePath /></parent>2、easypoi导包注意了,从这里开始坑就来了

Oracle 12 创建表空间_Mr_Bear_的博客-程序员秘密

创建表空间的语法如下: CREATE TABLESPACE tablespace  [DATAFILE clause]  存储路径  [MINIMUM EXTENT integer[K|M]]  [BLOCKSIZE integer [K]]  [LOGGING|NOLOGGING]  [DEFAULT STORAGE clause ]

SpringWebFlux教程_spring-webflex 教程_西红柿系番茄的博客-程序员秘密

官方文档:https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html#spring-webflux推荐博客:https://blog.csdn.net/get_set/article/details/79466657

DataAccessor数据访问组件介绍_dengbi9024的博客-程序员秘密

数据访问是在开发信息系统中最常用的,相应的开源项目和组件也很多,小到SqlHelper大到各种ORM框架。SqlHelper灵活但是总觉的期功能不够用,ORM框架虽然提供了各种功能但很多功能却用不上。鉴于此,本人特地结合实际工作情况开发了一个数据访问组件。该组件的特性如下:1.支持把SQL写到配置文件中。这样就不会因为SQL语句的变动而重新编译项目了,并且也不依赖于存储过程;2.支持...

随便推点

Centos7 安装nginx反向代理mysql_nginx代理mysql_程序员吴彦祖的博客-程序员秘密

Centos7 安装nginx反向代理mysql1、首先机器上要安装好nginx,能访问到如下阶段2、我的nginx和mysql服务器地址分别为192.168.124.31和192.168.124.32以下为具体配置1.stream模块安装nginx默认安装的时候无法加载流stream模块,需要在启动参数里加上–with-stream。解决方法:重新对源文件进行编译、安装,通过添加–with-stream参数指定安装stream模块。[[email protected] nginx-1.12.2

matlab画图时自由切换坐标系_matlab画出的图形怎么改变坐标系_wolf1132的博客-程序员秘密

在使用matlab进行建模或者数据分析时,有时候需要在画多张图,或者在一张图中画几个坐标系,而每一个坐标系中的图形需要多次完成,当然最简单的方法是单独准备好每一个坐标系的数据,再逐一画每一个坐标系的图,就不存在坐标系切换的问题。但有时候不可避免切换坐标系,比如图形时实时更新的,上面的思路就不可行。再比如我们在设计的过程中,新的灵感到来,需要在原来的基础上再加一个坐标系,这时候可以在原来的基础上...

构造方法 与 重载_构造和重载_qq_15009447的博客-程序员秘密

语法:访问修饰符 构造方法名(){//初始化代码}1.无返回值类型2.方法名与类名相同作用:对象初始化系统提供默认无参构造方法但是如果自定义了 带参构造方法,系统不再提供默认无餐构造方法,想用 必须显示声明public this 指代this调用构造方法必须在第一行this 可以调用...

HTML表单之邮箱验证_邮箱验证html_秦时明月之君临天下的博客-程序员秘密

学习HTML,表单是一个很重要的知识,而表单最常用的可能就是表单的验证了;下面我介绍验证邮箱的一种方法。

【STM32+cubemx】0003 HAL库开发:定时器基础应用,中断和回调函数_hal_tim_periodelapsedcallback_xiaobaibai_2021的博客-程序员秘密

本节我们来学习STM32最基础的定时器应用,并利用hal库生成的代码,添加用户自己的功能到回调函数中。程序实现的功能是:以10ms的定时器中断为周期,循环检测一个按键的状态,如果按下,则点亮LED灯;没有按下则熄灭LED灯。1)cubemx生成代码首先还是在cubemx中生成代码,选择器件、设置SYS(调试接口)、设置RCC(外部晶振时钟源)这几个步骤和前一节一样。然后设置用户IO口,我们需要一个引脚输出驱动LED灯,一个引脚输入作为按键。这里我们的硬件上LED仍然使用开发板上的PC13

Ioc&DI和Sping框架简介_longzhanqing的博客-程序员秘密

通过例子的讲解,通过不断的解耦来引入Spring

推荐文章

热门文章

相关标签