shell函数内调用另一个函数(不带返回值和带返回值)

目录
  • 一、函数B调用不带返回值的函数A
  • 二、函数B调用带返回值的函数A,并接收函数A的返回值进行输出

一、函数B调用不带返回值的函数A

新建文件,命名为 test.sh,添加如下代码:

#!/bin/bash

# 即将被调用的函数A
function A(){
	a="aaa"
	echo $a
}

# 函数B,直接调用A
function B(){
	A
	echo "bbb"
}

B

命令行中通过sh test.sh执行结果:

二、函数B调用带返回值的函数A,并接收函数A的返回值进行输出

如果函数A有return,是不是在上面例子的基础上,把A函数加多一个return就可以了呢?那么我们来试一下,代码如下:

#!/bin/bash

# 即将被调用的函数A
function A(){
	a=10
	return $a
}

# 函数B
function B(){
	a=`A`  # 注意,这里不能直接写成a=A
	echo $a
}

B

命令行执行sh test.sh查看执行结果:

等等,为什么结果输出为空呢?原来shell中调用带返回值的函数之后,返回值自动保存在$?中,所以将函数B改成如下即可:

#!/bin/bash

# 即将被调用的函数A
function A(){
	a=10
	return $a
}

# 函数B
function B(){
	a=`A`
	echo $?  # 注意:这里要用英文的?,不能用中文的?
}

B

查看执行结果:

然而,题主遇到返回结果并不是期望结果的情况。代码如下:

#!/bin/bash

# 即将被调用的函数A
function A(){
	a="aaa"
	return $a
}

# 函数B
function B(){
	a=`A`
	echo $?
	echo "bbb"
}

B

命令行执行sh test.sh查看结果:

这是什么意思呢?为什么是255,而不是期望的结果“aaa”?原因是shell中用return的话,return的值只能为整形,其它非整形的,如想要直接return是获取不到的。
那么,该如何解决该问题呢?代码如下:

#!/bin/bash

# 即将被调用的函数A
function A(){
	a="aaa"
	echo $a
}

# 函数B
function B(){
	a=`A`
	echo $a
	echo "bbb"
}

B

查看结果:

怎么样?居然不用return字段,很奇怪吧?shell的语法就是这么特立独行。至此,问题得到解决。

到此这篇关于shell函数内调用另一个函数(不带返回值和带返回值)的文章就介绍到这了,更多相关shell函数内调用另一个函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • PowerShell中简单的自定义函数和调用函数例子

    在PowerShell中是否有函数?PowerShell是否可以自定义函数?PowerShell中如何自定义函数? 在PowerShell中,我们可以使用函数(function)来简化编程开发.在PowerShell中使用function这个关键词来标识一个函数.一个自定义的函数,由function关键词开始,然后用一对大括号来包括起整个函数体的内容. 我们先来看一下简单的PowerShell函数: 复制代码 代码如下: function Test-Function {     Write-Ho

  • 详解shell 函数定义与调用

    一.Shell函数定义格式 shell函数定义格式,各部分说明如下: [ function ]等中括号括起来部分----表示可选(即可有可无) your_function_name部分----为函数名 your_shell_commands部分----为函数代码:shell一般以行为单位,但可以使用"\"换行,也可以在单行内使用";"作为分隔符 return int部分----shell函数可以有返回值,但只能返回整数不能返回字符串 [ function ] you

  • Shell之function函数的定义及调用示例

    目录 function函数的定义及调用 function函数的定义 function函数的调用[位置传参] 函数使用return返回值[位置传参] 函数的调用[数组传参] function函数的定义及调用 将一些相对独立的代码变成函数,可以提高程序的可读性和重用性.避免重复编写大量相同的代码 function函数的定义 方法一: function_name () { statement1 statement2 .... statementn } 方法二: function function_na

  • shell自定义函数及参数调用解析

    一.定义函数 复制代码 代码如下: function fname(){statements;} 或 复制代码 代码如下: fname(){statements;} 二.调用函数 只需要使用函数名,即可调用某个函数:$ fname ; #执行函数 可以传递参数给函数,并由脚本进行访问:fname arg1 arg2; # 传递参数 以下是函数fname的定义.在函数fname中,包含了各种访问函数参数的方法. 复制代码 代码如下: fname(){  echo $1, $2; # 访问参数1和参数

  • vbs 中调用shell.application 简单函数

    Set os=CreateObject("wscript.shell") Set os0=CreateObject("shell.application") Do  input1=InputBox(" 请选择:"+chr(13)+chr(13)+ _         "1. 全部窗口最小化"+chr(13)+ _          "2. 窗口状态复原"+chr(13)+ _          "

  • shell函数内调用另一个函数(不带返回值和带返回值)

    目录 一.函数B调用不带返回值的函数A 二.函数B调用带返回值的函数A,并接收函数A的返回值进行输出 一.函数B调用不带返回值的函数A 新建文件,命名为 test.sh,添加如下代码: #!/bin/bash # 即将被调用的函数A function A(){ a="aaa" echo $a } # 函数B,直接调用A function B(){ A echo "bbb" } B 命令行中通过sh test.sh执行结果: 二.函数B调用带返回值的函数A,并接收函数

  • 一个Js文件函数中调用另一个Js文件函数的方法演示

    我们知道,在html中,利用<script language="javascript" type="text/javascript" src="./script.js"></script>引入的两个js是不可以相互调用的.那么该如何解决呢?当然,你可以将代码通通copy过来,也许你并不喜欢这样. 例如有这样一个html,里面有一个按钮,当按下时调用b.js文件中的方法b().而b()中又要调用a.js文件中的方法a().若

  • 详解Shell脚本中调用另一个Shell脚本的三种方式

    主要以下有几种方式: Command Explanation fork 新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 Shell. exec 在同一个 Shell 内执行,但是父脚本中 exec 行之后的内容就不会再执行了 source 在同一个 Shell 中执行,在被调用的脚本中声明的变量和环境变量, 都可以在主脚本中进行获取和使用,相当于合并两个脚本在执行. 第一种:fork 特点:会生成子PID而且可重复被

  • javascript嵌套函数和在函数内调用外部函数的区别分析

    我们都知道在函数中定义的局部变量在声明他的函数体以及其嵌套的函数内始终是有定义的,并且在函数的作用域链上始终会有个对象指向全局对象,使函数能够访问到全局变量. var ga = 'global'; var func = function() { var la = 'local'; return function() { return function() { return function() { alert(la);alert(ga); } } } } a = func(); a()()();

  • 在Shell脚本中调用另一个脚本的三种方式讲解

    先来说一下主要以下有几种方式: fork: 如果脚本有执行权限的话,path/to/foo.sh.如果没有,sh path/to/foo.sh. exec: exec path/to/foo.sh source: source path/to/foo.sh fork fork 是最普通的, 就是直接在脚本里面用 path/to/foo.sh 来调用 foo.sh 这个脚本,比如如果是 foo.sh 在当前目录下,就是 ./foo.sh.运行的时候 terminal 会新开一个子 Shell 执行

  • Python如何在main中调用函数内的函数方式

    一般在Python中在函数中定义的函数是不能直接调用的,但是如果要用的话怎么办呢? 一般情况下: def a():#第一层函数 def b():#第二层函数 print('打开文件B') b()#第二层中的函数直接调用 结果显示: Traceback (most recent call last): File "C:/Users/rog/Desktop/wenzhang.py", line 4, in <module> b() NameError: name 'b' is

  • Python常见内置高阶函数即高阶函数用法

    目录 1.什么是高阶函数? 2.高阶函数-map.filter.reduce 2.1map函数 2.2filter函数 2.3reduce函数 1.什么是高阶函数? 高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),满足其一则为高阶函数. 参数为函数: #参数为函数 def bar(): print("in the bar..") def foo(func): func() print("in the foo

  • C 与 C++ 接口函数相互调用的实现

    一.C 或 C++ 编译的四个步骤 (一) 预处理 在该步骤中,编译器将源程序中以"#"开头的语句进行处理.其中,#include 的原理是将目标文件内容导入本文件. (二) 编译 在该步骤中,编译器将第一步生成的各个文件分别转换成汇编语言文件.在该过程中,所有函数的名称都会被转换成一个符号作为汇编文件中的唯一标识,对 C 语言函数一般直接用函数名称作为其唯一标识的符号,而对于 C++ 函数在多数情况下需要在函数名称加上各种前缀或后缀才能作为其标识,比如函数 void Print(in

  • C语言中如何获取函数内成员的值你知道吗

    目录 C语言中如何获取函数内成员的值 通过函数返回值获取函数内部的情况 通过变量降级(传地址)获取函数内部的情况 总结 C语言中如何获取函数内成员的值 引言:函数作为实现 C 程序功能模块的主要载体,可以将功能的实现细节封装在函数内部.这对于实现模块化的编程带来了便利,让指定功能的复用性也变得更好.但“封装”除带来上述好处外,也导致访问函数内部细节的不太方便,为了了解函数内部的情况,我们讨论如何对函数进行拆包,即获取函数内部的信息. 通过函数返回值获取函数内部的情况 int get_the_va

  • javascript高级编程之函数表达式 递归和闭包函数

    定义函数表达式有两种方式:函数声明和函数表达式. 函数声明如下: function functionName(arg0,arg1,arg2){ //函数体 } 首先是function关键字,然后是函数的名字. FF,Safrai,Chrome和Opera都给函数定义了一个非标准的name属性,通过这个属性可以访问到函数指定的名字.这个函数的值永远等于跟在function关键字后面的标识符. //只在FF,Safari,Chrome和Opera有效 alert(functionName.name)

随机推荐