在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
答案 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"
的状态。