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

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

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

function getUptime() {
uptime >/dev/null 2>/dev/null
echo "$?"
}

我想最好不要更改函数,而是在以下位置更改代码:

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

最新更新