从另一个bash函数获取输出和返回值

时间:2017-01-16 22:20:15

标签: bash function callback

在function_two中,我需要同时获取echo的输出和function_one的返回值

#!/bin/bash
function_one() {
    echo "okay then"
    return 2
}
function_two() {
    local a_function="function_one"
    local string=`${a_function}`
    echo $string # echos "okay then"
    echo "$?" #echos 0 - how do we get the returned value of 2?
}
function_two

尝试echo "$?"时,我会0而不是2

更新

正如Ipor Sircer所指出的,上面的$?给出了上一个命令echo $string的退出代码

所以我会立即抓住退出代码。正如choroba所提到的,变量的定位和分配需要分开。

这是工作脚本:

#!/bin/bash
function_one() {
    echo "okay then"
    return 2
}
function_two() {
    local a_function="function_one"
    local string
    string=`${a_function}`
    local exitcode=$?
    echo "string: $string" # okay then
    echo "exitcode: $exitcode" # 2
}
function_two

1 个答案:

答案 0 :(得分:4)

0是执行的最后一个命令的退出状态,即<style type="text/css"> .labelMaker{ border:solid; width:150px; height:100; right: 170px; display: inline-block; float: right; position: relative; } .wrapper canvas { margin-right:180px; float:left; } </style>

如果您稍后需要使用退出状态,请将其存储在变量中:

echo $string

您还需要将变量的分配和本地化分开,而不是取代local string string=`${a_function}` local status=$? echo "Output: $string" echo "Status: $status" 的状态。