首页 > 系统相关 >26. shell当中函数返回值,返回值的作用,退出码状态,得到函数处理结果

26. shell当中函数返回值,返回值的作用,退出码状态,得到函数处理结果

时间:2024-09-03 12:23:19浏览次数:6  
标签:状态 26 return 函数 echo 退出 返回值


函数返回值作用

在其他编程语言中,返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果可通过 return 语句返回。但Shell中返回值表示的是函数的退出状态:返回值 0 表示函数执行成功,非 0 表示函数执行失败。
if、while、for 等语句都是根据函数的退出状态来判断条件是否成立。

函数的退出状态码:

默认取决于函数中执行的最后一条命令的退出状态码。
自定义退出状态码,其格式为:

return 从函数中返回,用最后状态命令决定返回值
return 0 无错误返回
return 1-255 有错误返回

Shell 函数的返回值是一个介于 0~255 之间的整数,其中只有 0 表示成功。

函数执行失败时,可以根据返回值判断具体出现了什么错误,比如一个打开文件的函数,指定 1 表示文件不存在,2 表示文件没有读取权限,3 表示文件类型不对。

如果函数体中没有 return 语句,那么使用默认的退出状态,也就是最后一条命令的退出状态。也就是 return $?,$?是一个特殊变量,用来获取上一个命令的退出状态。

得到函数处理结果

return 表示退出状态,但想得到函数处理结果,可以两种解决方案:

  • 一种是借助全局变量,将得到的结果赋值给全局变量;
  • 一种是在函数内部使用 echo、printf 命令将结果输出,在函数外部使用$()或者``捕获结果。

下面我们具体来定义一个函数 getsum,计算从 m 加到 n 的和,并使用以上两种解决方案。

示例

  • 通过全局变量
#!/bin/bash
str="abc"
function changeStr() {
    str=$1
    return $? #返回上一条命令的退出状态
}
read m
if changeStr $m; then  # 通过命令的退出状态判断
    echo "The newstr is $str" #输出全局变量
else
    echo "Error!"
fi
[root@mdns zaishu]#./funs 
efg
The newstr is efg

缺点: 1. 需要定义全局变量;2. 需要对应上函数里面的变量。

  • 通过echo得到
#!/bin/bash
function getStr() {
    str=$1
    echo $str  # 通过echo将内容输出
    return $? #返回上一条命令的退出状态
}
read m

newstr=$(getStr $m) # 通过$() 得到函数内部的输出
echo "The newstr is $newstr" #输出全局变量
[root@mdns zaishu]#./funs 
opq
The newstr is opq


标签:状态,26,return,函数,echo,退出,返回值
From: https://blog.51cto.com/zaishu/11907843

相关文章

  • Python正则表达式替换(sub)中如何使用替换函数
    defsub_the_chinese_colon_of_the_question_number(_lines:str)->str:""":param_lines:清理后的文本文件内容功能:查找并替换题号后的中文冒号为英文冒号。"""#定义替换函数,用于调用re.sub:defreplacement(match)->str:"&q......
  • pyro 概率编程语言 能直接调用pytorch的save函数保存模型,贝叶斯神经网络
    NeuralNetworks—Pyrodocumentationhttps://docs.pyro.ai/en/stable/nn.htmldocs.pyro.ai/en/stable/nn.html神经网络¶该模块pyro.nn提供在深度概率编程上下文中有用的神经网络模块的实现。烟火模块¶Pyro包括一个类PyroModule,的子类torch.nn.Module,其属性可以被火焰效果修......
  • 述FunsorFunsor是一个类似张量的函数和分布库。概率规划的泛函张量获取系统描述 ppl,p
    项目描述FunsorFunsor是一个类似张量的函数和分布库。看见概率规划的泛函张量获取系统描述。安装使用pip安装:Funsor支持Python3.7+。pipinstallfunsor从源安装:[email protected]:pyro-ppl/funsor.gitcdfunsorgitcheckoutmasterpipinstall.使用funsorFunsor......
  • 西游再现,函数计算一键部署 Flux 超写实文生图模型部署
    从花果山的灵石出世,到取经路上的九九八十一难,再到大闹天宫的惊心动魄……这些耳熟能详的西游场景,如今都能通过Flux模型,以超乎想象的细节和真实感呈现在你眼前。本次实验在函数计算中内置的flux.1-dev-fp8大模型,搭配Lora模型,无需复杂的配置,一键部署,你就能成为这场视觉盛宴的创造者......
  • OpenCV(cv::Mat 类的成员函数 ptr<T>())
    目录1.函数定义2.功能3.示例4.注意事项总结在OpenCV中,Mat类的成员函数ptr<T>()用于获取指向矩阵数据的指针,允许直接访问底层数据。T是指针的类型,它通常与矩阵的元素类型对应。通过这个函数,你可以以一种低开销的方式访问和修改矩阵数据。1.函数定义template<type......
  • 文件夹图标工具类 - C#小函数类推荐
          此文记录的是修改文件夹图片的工具类。/***文件夹图标工具类AustinLiu刘恒辉ProjectManagerandSoftwareDesignerE-Mail:[email protected]:http://lzhdim.cnblogs.comDate:2024-01-1515:18:00使用方法:......
  • python基础(14内置函数介绍)
    python系列文章目录python基础(01变量&数据类型&运算符)python基础(02序列共性)python基础(03列表和元组)python基础(04字符串&字典)python基础(05集合set)python基础(06控制语句)python基础(07函数)python基础(08类和对象)python基础(09闭包&装饰器)python基础(10异常处理)python......
  • Oracel:常用函数:单行函数、多行函数(组函数)
    一、单行函数单行函数是指每一行数据执行操作后都会返回一行数据单行函数可以进行嵌套,嵌套函数的顺序是由内到外单行函数分为5类:字符、数值、日期、转换、通用函数1)大小写控制函数lower('str'):大写转小写selectlower('ORACLE')fromdual;--oracleupper('str'):小写转......
  • Python中的函数艺术:解锁高效编程的秘密
    引言在软件开发过程中,重复使用相同的代码段是不可避免的。这不仅增加了代码量,还可能导致维护困难。通过定义函数,我们可以将这些重复代码抽象出来,封装成一个可重用的组件。这样做的好处显而易见:减少了代码冗余、提高了代码的复用性,同时也使得程序结构更加清晰。此外,在团队协作时,良......
  • Pytorch损失函数模块
     直接调用定义就好了要使用的损失函数,但是nn.functional和nn.Module中都有损失函数,至于从哪个包中调用损失函数看你的需求,和图中所说一样,如果没有需要学习的参数就用nn.functional,如果有要学习更新的参数就用nn.Module。虽然是这样说,但是我看这个代码下面使用的就算是使用func......