首页 > Shell脚本 阅读:1,814

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

pk10开户推出辅导班啦,包括「C语言辅导班、C++辅导班、算法/数据结构辅导班」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践 + 永久学习。QQ在线,随时响应!

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

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

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

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

我们使用两个脚本文件来演示。

先编写下面的代码,并保存为 a.sh:
#!/bin/bash


if [ $1 == 100 ]
then
   return 0  #参数正确,返回0
else
   return 1  #参数错误,返回1
fi
再编写下面的代码,并保存为 b.sh:
#!/bin/bash

echo $?
先运行 a.sh,传递参数 100,然后再运行 b.sh,结果如下:

$ . ./a.sh 100
$ . ./b.sh
0

如果将传递给 a.sh 的参数改为 89,b.sh 的运行结果就不同了:

$ . ./a.sh 89
$ . ./b.sh
1

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

编写下面的代码,并保存为 test.sh:
#!/bin/bash

#得到两个数相加的和
function add(){
    return `expr $1 + $2`
}

add 23 50  #调用函数
echo $?  #获取函数返回值
运行 test.sh:

$ . ./test.sh
73