在 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
Run Code Online (Sandbox Code Playgroud)
当尝试时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
Run Code Online (Sandbox Code Playgroud)
0 是最后执行的命令的退出状态,即echo $string.
如果稍后需要使用退出状态,请将其存储在变量中:
local string
string=`${a_function}`
local status=$?
echo "Output: $string"
echo "Status: $status"
Run Code Online (Sandbox Code Playgroud)
您还需要将变量的赋值和本地化分开,以免获取其状态local。