Shell $?获取函数返回值或者上一个命令的退出状态

$? 是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值。

所谓退出状态,就是上一个命令执行后的返回结果。退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1,这和C语言的 main() 函数是类似的。

不过,也有一些命令返回其他值,表示不同类型的错误。

1) $? 获取上一个命令的退出状态

编写下面的代码,并保存为 test.sh:

#!/bin/bash
if [ "$1" == 100 ]
then
  exit 0 #参数正确,退出状态为0
else
  exit 1 #参数错误,退出状态1
fi

exit表示退出当前 Shell 进程,我们必须在新进程中运行 test.sh,否则当前 Shell 会话(终端窗口)会被关闭,我们就无法取得它的退出状态了。

例如,运行 test.sh 时传递参数 100:

[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ bash ./test.sh 100 #作为一个新进程运行
[mozhiyan@localhost demo]$ echo $?
0

再如,运行 test.sh 时传递参数 89:

[mozhiyan@localhost demo]$ bash ./test.sh 89 #作为一个新进程运行
[mozhiyan@localhost demo]$ echo $?
1

2) $? 获取函数的返回值

编写下面的代码,并保存为 test.sh:

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

运行结果:
73

有 C++、C#、Java 等编程经验的读者请注意:严格来说,Shell 函数中的 return 关键字用来表示函数的退出状态,而不是函数的返回值;Shell 不像其它编程语言,没有专门处理返回值的关键字。

到此这篇关于Shell $?获取函数返回值或者上一个命令的退出状态的文章就介绍到这了,更多相关Shell $? 函数返回值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Shell $0, $#, $*, $@, $?, $$和命令行参数的使用

    特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2. $# 传递给脚本或函数的参数个数. $* 传递给脚本或函数的所有参数. $@ 传递给脚本或函数的所有参数.被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到. $? 上个命令的退出状态,或函数的返回值. $$ 当前Shell进程ID.对于 Shell 脚本,就是这些脚本所在的进程ID. 命令行参数 运行脚本时传递给脚本的参数

  • Shell $?获取函数返回值或者上一个命令的退出状态

    $? 是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值. 所谓退出状态,就是上一个命令执行后的返回结果.退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1,这和C语言的 main() 函数是类似的. 不过,也有一些命令返回其他值,表示不同类型的错误. 1) $? 获取上一个命令的退出状态 编写下面的代码,并保存为 test.sh: #!/bin/bash if [ "$1" == 100 ] then exit 0 #参数正确,退出状态为0

  • C++中stack的pop()函数返回值解析

    目录 stack的pop()函数返回值 全部demo 分析 C++的返回值优化 从函数返回值 RVO stack的pop()函数返回值 int temp = s.pop(); cout<<temp<<endl; 运行代码会提示错误:error C2440: “初始化”: 无法从“void”转换为“int” 全部demo #include <iostream> #include <stack> using namespace std; int main() {

  • 怎么通过onclick事件获取js函数返回值(代码少)

    具体过程不做详细叙述,直接上代码: 写一个弹出框,绑定onclick事件是好像控制不了它的返回值.代码如下 function createBtn(){ for(var i = 0; i < _this.btn.length; i++){ var btn = document.createElement('span'); btn.id = 'btn_' + i; btn.innerHTML = _this.btn[i]; btn.style.padding = '5px 15px'; btn.st

  • python使用threading获取线程函数返回值的实现方法

    threading用于提供线程相关的操作,线程是应用程序中工作的最小单元.python当前版本的多线程库没有实现优先级.线程组,线程也不能被停止.暂停.恢复.中断. threading模块提供的类:  Thread, Lock, Rlock, Condition, [Bounded]Semaphore, Event, Timer, local. threading 模块提供的常用方法: threading.currentThread(): 返回当前的线程变量. threading.enumera

  • 解决使用python print打印函数返回值多一个None的问题

    根本原因: python定义函数时,一般都会有指定返回值,如果没有显式指定返回值,那么python就会默认返回值为None 我们输入的代码如下: def test(): print('aaa') print(test()) 相当于执行了: def test(): print('aaa') return None print(test()) 如果不想要有None,那么就要添加返回值 def test(): return 'ccc' print(test()) 补充知识:python中如何实现pri

  • C语言 用指针作为函数返回值详解

    C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include <stdio.h> #include <string.h> char *strlong(char *str1, char *str2){ if(strlen(str1) >= strlen(str2)){ return str1; }else{ return str2; } } int main(){ cha

  • Python中return函数返回值实例用法

    在学习return函数时候,还是要知道了解它最主要的函数作用,比如,怎么去实现返回一个值,另外还有就是我们经常会用到的使用return能够进行多值输出,这才是我们需要抓住知识的重点,针对上述所提及的内容,都可以来往下看文章,答案都在文章内容获取哦~ return 添加返回值 return 显示返回对象 返回值接受:value = func() 例子:计算学成最高分 listv = [90,80,88,77,66] # 分数计算return高分 def scoreCalculate(values)

  • Shell函数返回值方式

    目录 1.返回值的方式: 2.return和echo使用场景区别: 3.场景示例 1.返回值的方式: 方法一:return 方法二: echo 2.return和echo使用场景区别: (1).使用return返回值: 使用return返回值,只能返回1-255的整数 函数使用return返回值,通常只是用来供其他地方调用获取状态,因此通常仅返回0或1:0表示成功,1表示失败 (2).使用echo返回值: 使用echo可以返回任何字符串结果 通常用于返回数据,比如一个字符串值或者列表值 3.场景

  • Linux Shell函数返回值

    Shell函数返回值,一般有3种方式:return,argv,echo 1) return 语句 shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回. 示例: #!/bin/bash - function mytest() { echo "arg1 = $1" if [ $1 = "1" ] ;then return 1 else return 0 fi } echo echo "mytest 1" mytest 1 e

  • Python 函数返回值的示例代码

    0x 00 返回值简介 回顾下,上一节简单介绍了函数及其各种参数,其中也有简单介绍 print 和 return 的区别,print 仅仅是打印在控制台,而 return 则是将 return 后面的部分作为返回值作为函数的输出,可以用变量接走,继续使用该返回值做其它事. 函数需要先定义后调用,函数体中 return 语句的结果就是返回值.如果一个函数没有 reutrn 语句,其实它有一个隐含的 return 语句,返回值是 None,类型也是 'NoneType'. return 语句的作用:

随机推荐