iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux 中怎么使用Shell函数返回值
  • 630
分享到

Linux 中怎么使用Shell函数返回值

2023-06-09 17:06:59 630人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关linux 中怎么使用shell函数返回值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1) return 语句shell函数的返回值,可以和其他语言的返回值一样

这篇文章将为大家详细讲解有关linux 中怎么使用shell函数返回值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

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 1echo $?     # print return resultecho echo "mytest 0"mytest 0echo $?     # print return resultecho echo "mytest 2"mytest 2echo $?     # print return resultechoecho "mytest 1 = "`mytest 1`if mytest 1 ; then  echo "mytest 1"fiechoecho "mytest 0 = "`mytest 0`if mytest 0 ; then  echo "mytest 0"fiechoecho "if fasle" # if 0 is errorif false; then  echo "mytest 0"fiechomytest 1res=`echo $?`  # get return resultif [ $res = "1" ]; then  echo "mytest 1"fiechomytest 0res=`echo $?`  # get return resultif [ $res = "0" ]; then  echo "mytest 0"fiecho echo "end"

结果:
mytest 1
arg1 = 1
1

mytest 0
arg1 = 0
0

mytest 2
arg1 = 2
0

mytest 1 = arg1 = 1
arg1 = 1

mytest 0 = arg1 = 0
arg1 = 0
mytest 0

if fasle

arg1 = 1
mytest 1

arg1 = 0
mytest 0

end

先定义了一个函数mytest,根据它输入的参数是否为1来return 1或者return 0.
获取函数的返回值通过调用函数,或者最后执行的值获得。
另外,可以直接用函数的返回值用作if的判断。
注意:return只能用来返回整数值,且和c的区别是返回为正确,其他的值为错误。

2) argv全局变量
这种就类似于C语言中的全局变量(或环境变量)。
示例:

#!/bin/bash -g_var=function mytest2(){  echo "mytest2"  echo "args $1"  g_var=$1  return 0}mytest2 1echo "return $?"echoecho "g_var=$g_var"

结果:
mytest2
args 1
return 0

g_var=1

函数mytest2通过修改全局变量的值,来返回结果。

注: 以上两个方法失效的时候
以上介绍的这两种方法在一般情况下都是好使的,但也有例外。
示例:

#!/bin/bash -function mytest3(){  grep "123" test.txt | awk -F: '{print $2}' | while read line ;do    echo "$line"    if [ $line = "yxb" ]; then      return 0  # return to pipe only    fi  done  echo "mytest3 here "  return 1      # return to main process}g_var=function mytest4(){  grep "123" test.txt | awk -F: '{print $2}' | while read line ;do    echo "$line"    if [ $line = "yxb" ]; then      g_var=0      echo "g_var=0"      return 0  # return to pipe only    fi  done  echo "mytest4 here "  return 1}mytest3echo $?echomytest4echo $?echoecho "g_var=$g_var"

其中,test.txt 文件中的内容如下:
456:kkk
123:yxb
123:test
结果:
yxb
mytest3 here
1

yxb
g_var=0
mytest4 here
1

g_var=
可以看到mytest3在return了以后其实没有直接返回,而是执行了循环体后的语句,同时看到mytest4中也是一样,同时,在mytest4中,对全局变量的修改也无济于事,全局变量的值根本就没有改变。这个是什么原因那?
笔者认为,之所以return语句没有直接返回,是因为return语句是在管道中执行的,管道其实是另一个子进程,而return只是从子进程中返回而已,只是while语句结束了。而函数体之后的语句会继续执行。
同理,全局变量在子进程中进行了修改,但是子进程的修改没有办法反应到父进程中,全局变量只是作为一个环境变量传入子进程,子进程修改自己的环境变量,不会影响到父进程。
因此在写shell函数的时候,用到管道(cmd &后台进程也一样)的时候一定要清楚此刻是从什么地方返回。

3) echo 返回值
其实在shell中,函数的返回值有一个非常安全的返回方式,即通过输出到标准输出返回。因为子进程会继承父进程的标准输出,因此,子进程的输出也就直接反应到父进程。因此不存在上面提到的由于管道导致返回值失效的情况。
在外边只需要获取函数的返回值即可。
示例:

#!/bin/bash ############################################### Author : IT-Homer# Date  : 2012-09-06 # Blog  : Http://blog.csdn.net/sunboy_2050##############################################function mytest5(){  grep "123" test.txt | awk -F: '{print $2}' | while read line; do    if [ $line = "yxb" ]; then      echo "0"  # value returned first by this function      return 0    fi  done  return 1}echo '$? = '"$?"result=$(mytest5)echo "result = $result"echoif [ -z $result ]    # string is nullthen  echo "no yxb. result is empyt"else  echo "have yxb, result is $result"fi

结果:
$? = 0
result = 0

have yxb, result is 0
这个方式虽然好使,但是有一点一定要注意,不能向标准输出一些不是结果的东西,比如调试信息,这些信息可以重定向到一个文件中解决,特别要注意的是,用到比如grep这样的命令的时候,一定要记得1>/dev/null 2>&1来避免这些命令的输出。

关于Linux 中怎么使用Shell函数返回值就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Linux 中怎么使用Shell函数返回值

本文链接: https://www.lsjlt.com/news/256900.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux 中怎么使用Shell函数返回值
    这篇文章将为大家详细讲解有关Linux 中怎么使用Shell函数返回值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1) return 语句shell函数的返回值,可以和其他语言的返回值一样...
    99+
    2023-06-09
  • Linux Shell函数返回值
    Shell函数返回值,一般有3种方式:return,argv,echo 1) return 语句 shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回。 示例: #!/bin/b...
    99+
    2022-06-04
    函数 返回值 Linux
  • shell函数内调用另一个函数(不带返回值和带返回值)
    目录一、函数B调用不带返回值的函数A二、函数B调用带返回值的函数A,并接收函数A的返回值进行输出一、函数B调用不带返回值的函数A 新建文件,命名为 test.sh,添加如下代码: #!/bin/bash # 即将被调用...
    99+
    2022-08-08
    shell函数内调用另一个函数 shell函数调用
  • Shell中函数返回值超出问题
    1、前言   快半年没有写博客了,荒废了很久,工作中的杂事太多,自己越来越懒了。为了鞭策自己成长,还是要坚持写写博客,记录自己的成长。 2、shell函数介绍 语法: [ function ] funna...
    99+
    2022-06-04
    函数 返回值 Shell
  • python函数怎么返回多个返回值
    本篇内容主要讲解“python函数怎么返回多个返回值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python函数怎么返回多个返回值”吧!一般情况下,函数只有一个返回值,但Python也支持函数...
    99+
    2023-06-30
  • php中怎么从函数中返回值
    这篇文章主要讲解了“php中怎么从函数中返回值”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中怎么从函数中返回值”吧!在php中,可以利用return语句来从函数中返回值,可返回函数的...
    99+
    2023-06-20
  • PHP中怎么利用递归函数返回值
    本篇文章给大家分享的是有关PHP中怎么利用递归函数返回值,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。<php functiontest($i) &n...
    99+
    2023-06-17
  • python中函数返回值是什么
    python中函数的返回值包含指定返回值和隐含返回值两种指定返回值当函数中有return语句时,return语句的结果就是函数的返回值。例:def info(x):return x +1函数返回值为x+1,其中x为函数的参数。隐含返回值如函...
    99+
    2022-10-08
  • linux shell自定义函数(定义、返回值、变量作用域)介绍
    一、定义shell函数(define function) 语法:[ function ] funname [()] { action; [return int;] } 说明: 1、可以带fu...
    99+
    2022-06-04
    自定义 变量 函数
  • linux shell 自定义函数方法(定义、返回值、变量作用域)
    一、定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1、可以带funct...
    99+
    2022-06-04
    自定义 变量 函数
  • 如何解决Shell中函数返回值超出问题
    这篇文章主要介绍“如何解决Shell中函数返回值超出问题”,在日常操作中,相信很多人在如何解决Shell中函数返回值超出问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解决Shell中函数返回值超出问题...
    99+
    2023-06-09
  • python怎么让函数没有返回值
    python中通过在函数中添加一个return语句,实现函数没有返回值,具体方法如下:例:定义一个func函数def func(x,y):num = x + yprint(func(1,2))输出结果为:3在函数中添加一个return语句d...
    99+
    2022-10-11
  • python怎么从函数返回多个值
    小编给大家分享一下python怎么从函数返回多个值,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!从函数返回多个值python函数可以返回多个值,而无需任何额外的需...
    99+
    2023-06-27
  • c语言怎么调用python函数返回值
    在c语言中调用python函数返回值,具体方法如下:void test1() { Py_Initialize();//初始化python getcurrent(); PyObject *pModule = NULL, *pFunc = NU...
    99+
    2022-10-14
  • C语言函数怎么返回多个值
    这篇文章主要介绍“C语言函数怎么返回多个值”,在日常操作中,相信很多人在C语言函数怎么返回多个值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言函数怎么返回多个值”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-05
  • python中函数返回值的作用是什么
    python中函数返回值的作用是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyt...
    99+
    2023-06-14
  • shell脚本返回值可以使用什么参数实现
    这篇文章主要介绍shell脚本返回值可以使用什么参数实现,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!shell脚本的返回值可以使用return参数,但是return只能返回整数类型的值。因此实现比较复杂的功能的话s...
    99+
    2023-06-09
  • python使用max函数返回参数的最大值
    在python中使用max函数返回参数最大值的方法max:max()函数的作用是返回给定参数的最大值。max()函数语法:max( x, y, z, .... )max()函数使用方法:print ("max(80, 100, 1000) ...
    99+
    2022-10-20
  • MYSQL 使用GROUP_CONCAT函数返回值缺失问题
    MySQL中的GROUP_CONCAT函数用于将查询结果集中的多行数据合并为一行,常用于统计分组聚合操作。然而,在使用GROUP_CONCAT时,可能会遇到截断问题,即合并后的字符串长度超过了MySQL的配置限制,导致结果不完整。本文将介绍...
    99+
    2023-09-15
    mysql 数据库 bash
  • 怎么在python中返回函数
    怎么在python中返回函数?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作