嵌套函数调用Bash

现在,我正在尝试在另一个函数调用中嵌套一个bash函数调用(以便将一个函数输出用作另一个函数的输入).是否有可能在bash中嵌套函数调用,我正试图在这里做?

首先,我定义了这两个函数

returnSomething()
{
    return 5;
}

funky ()
{
  echo $1;
}

然后,我尝试使用一个函数输出作为另一个函数的输入.
但是,下一个语句不会打印returnSomething的输出.相反,它根本不打印任何东西.

funky $returnSomething; #Now I'm trying to use the output of returnSomething as the input for funky.
你有两个问题.一个是return不设置函数输出,而是设置其退出状态(成功为零,失败为非零).例如,echo foo将输出foo(加上换行符),但退出状态为0.要控制输出,请使用echo或printf:
function returnSomething ()     # should actually be outputSomething
{
    echo 5
}

另一个问题是$returnSomething(或${returnSomething})给出了一个名为returnSomething的变量的值:

x=5          # sets the variable x
echo "$x"    # outputs 5

要捕获命令的输出,请使用符号$(…)(或“`,但后者更棘手).所以:

function funky ()
{
    echo "$( "$1" )"
}
funky returnSomething    # prints 5

要不就:

function funky ()
{
    "$1"          # runs argument as a command
}
funky returnSomething    # prints 5

相反,如果您确实要捕获命令的退出状态,请使用特殊的shell参数? (完成后设置为命令的退出状态):

function returnSomething ()
{
    return 5
}
function funky ()
{
    "$1"          # runs argument as a command
    echo "$?"     # prints its exit status
}
funky returnSomething    # prints 5

相关文章

普通模式 >G 增加当前行到文档末尾处的缩紧层级 $ 移动到本行的末尾 . 相当于一个...
原文连接: https://spacevim.org/cn/layers/lang/elixir/ 模块简介 功能特性 启用模块 快捷键 语言专属...
原文连接: https://spacevim.org/cn/layers/lang/dart/ 模块简介 功能特性 依赖安装及启用模块 启用模...
 =   赋值操作符,可以用于算术和字符串赋值 +        加法计算     -        减法运算...
1.根据包名来查看指定的APP指定数据 adb shell "top | grep com.xxx.xxx" 由于这样打印出来的数...
ctrl+F 向下翻页 ctrl+B 向下翻页 u 取消最近一次操作 U 取消当前行的操作 ZZ 保存当前内容并退出 gg 跳...