我已经看过bash函数的返回值了,看来我还是不明白它是如何工作的。 我设置了3个函数,每个函数都应返回RET_VAL返回值。 我假设func_1根据if语句返回1或0 我假设func_2根据if语句返回1或0 我假设func_3应该根据func_2的返回值打印1或0
func_1() {
RET_VAL=0
if [ -d /tmp/dir ]; then
echo "Dir exists"
RET_VAL=0
else
echo "Dir doesn't exist"
RET_VAL=1
fi
return ${RET_VAL}
}
func_2() {
RET_VAL=0
if func_1; then
if [ -f /tmp/file_1]; then
echo "File exists"
else
echo "File doesn't exist"
RET_VAL=1
fi
else
RET_VAL=1
fi
return ${RET_VAL}
}
func_3() {
if func_2; then
echo "Dir and File do exist"
else
echo "Dir and file do not exist"
fi
}
我的假设是否正确?或者每个函数都返回最后执行的内容,例如echo语句? 如果是这样,我如何确保这些函数返回1或0值?
干杯, 罗兰
答案 0 :(得分:2)
func_3
将不会显示func_2
的返回值。 if
语句将使用 func_2
的退出状态来确定采用哪个分支。 每个命令都具有退出状态,因此在没有显式return
命令的情况下,要执行的最后一条命令的退出状态将是函数的退出状态。对于func_3
,退出状态将是执行任何echo
命令的退出状态(实际上始终为0,没有任何I / O错误)。