Bash函数返回意外值
这个输出“应该在这里”。如何获取Bash函数返回意外值,bash,Bash,这个输出“应该在这里”。如何获取false值?您似乎将输出与返回值混淆了 $function是一个变量,您似乎没有在任何地方填充它。要使用函数的输出填充它,请使用 function() { if something_that_will_fail; then irrelevantcode else echo "should be here" false fi } echo $function 函数的返回值可以从特殊变量$?中检索 outpu
false
值?您似乎将输出与返回值混淆了
$function
是一个变量,您似乎没有在任何地方填充它。要使用函数的输出填充它,请使用
function() {
if something_that_will_fail; then
irrelevantcode
else
echo "should be here"
false
fi
}
echo $function
函数的返回值可以从特殊变量$?
中检索
output=$(function_call)
如果要在条件中使用它,通常根本不需要变量,因为可以在条件中直接运行函数:
function_call
value=$?
可以缩短为
function_call
if (( $? )) ; then
echo There was an error
else
echo Everything OK
fi
Bash没有内置的布尔变量。此外,在我看来,将函数调用为la
$function\u name
也是错误的
我不确定你想要实现什么,但你有两个选择:
- 您可以在函数中输出字符串,然后检索它们
- 此外,您还可以通过
键设置函数的退出状态(这就是return
的全部内容);在这里,您还可以为return
返回指定0-255范围内的状态代码,其中0表示函数成功终止,所有其他数字表示相反李>
#/usr/bin/env bash
函数大于(){
本地值1=$1
本地值2=$2
如果[[$value1-gt$value2]];则
printf“%s”大于%s!\n“$value1$value2
返回0
其他的
printf“%s”不大于%s!\n“$value1$value2
返回1
fi
}
_func_所说的=$(是否大于21 42)
func_退出_状态=$?
如果[$func_退出_状态-等式0]];然后
echo$u func_说的话
printf“成功代码:%s\n”$func\u退出\u状态
其他的
echo$u func_说的话
printf“错误代码:%s\n”$func\u退出\u状态
fi
输出:
21不大于42!
错误代码:1
false
是一个退出状态始终为1而不是值的命令。另外,请注意,函数的退出状态将是其中最后一个命令的退出状态。在这种情况下,它是false
,因此函数将以1的状态退出(表示失败),但如果函数在false
命令后执行任何操作,则该状态将更改。这就是为什么最好使用return1
之类的工具来控制函数的退出状态<根据定义,code>return是函数将执行的最后一件事,因此它可以完全控制退出状态。
if function_call ; then
echo Everything OK
else
echo There was an error
fi