bash:函数返回输出而不是输出状态

时间:2019-12-04 06:33:05

标签: bash

我有一个小的bash脚本,如下所示

function getUptime() {

    uptime 2>/dev/null
    return "$?"
}

resultReceived=$(getUptime)
echo "Result: $resultReceived"

执行脚本时,我得到的是0命令输出,而不是uptime。我在哪里做错了。请帮忙。

调试输出

 tmp bash -x testingscript.sh
++ getUptime
++ uptime
++ return 0
+ resultReceived='11:47  up 3 days, 19:24, 7 users, load averages: 1.88 1.78 2.04'
+ echo 'Result: 11:47  up 3 days, 19:24, 7 users, load averages: 1.88 1.78 2.04'
Result: 11:47  up 3 days, 19:24, 7 users, load averages: 1.88 1.78 2.04

1 个答案:

答案 0 :(得分:1)

您混合了退出状态和输出。
使用$(getUptime)可获得函数的输出,而不是退出状态。

您可以更改功能,但是名称将不匹配其功能。

function getUptime() {

    uptime >/dev/null 2>/dev/null
    echo "$?"
}

我想最好不要更改功能,而应在以下位置更改代码:

resultReceived=$(getUptime)
exitstatus=$?
echo "Result: $resultReceived, exitstatus: $exitstatus"