gpt4 book ai didi

具有返回值和返回字符串的 bash 函数

转载 作者:行者123 更新时间:2023-11-29 09:32:08 24 4
gpt4 key购买 nike

首先是我的源代码来测试bash函数的返回方法:

function oidev.fnc.bash.example.fncreturnstringvalue
{
echo "ABC"
return 1
}

和调用函数:

function oidev.fnc.bash.example.fncreturnstringvaluecaller
{
local FNCVALUE
local FNCSTRING
FNCSTRING=$(oidev.fnc.bash.example.fncreturnstringvalue && FNCVALUE="$?" || FNCVALUE="$?")
# String OK but Value empty
echo "VALUE : $FNCVALUE"
echo "STRING: $FNCSTRING"
unset FNCVALUE
unset FNCSTRING
oidev.fnc.bash.example.fncreturnstringvalue && FNCVALUE="$?" || FNCVALUE="$?"
# Value OK and String on STDOUT
echo "VALUE : $FNCVALUE"
echo "STRING: $FNCSTRING"
}

bash 中的输出:
值(value):
字符串:ABC
字母表
值:1
STRING:(肯定是空的,但从函数中回显)`

现在我的简单问题是:
是否可以通过一行构造将返回字符串和返回值分到两个不同的变量中?

我不想使用全局变量,也不想使用 if $?后分呼!
非常感谢您的帮助,对不起我的德语英语!

最佳答案

试试这个,也许有帮助:

func() {
echo 'abc'
return 111
}

read var1 var2 <<<$(func; echo $?)
echo "var1 $var1"
echo "var2 $var2"

将打印:

var1 abc
var2 111

“空间问题”的解决方法——现在,没有比使用这样的辅助函数更好的主意了

func() {
echo 'abc def'
return 111
}

runner() {
ret=$(func)
echo $? $ret
}

read -r var2 var1 <<<$(runner func)
echo "var1 $var1"
echo "var2 $var2"

或使用辅助变量并切换变量顺序

func() {
echo 'abc def'
return 111
}
read -r var2 var1 <<<$(res=$(func); echo $? $res)
echo "var1 $var1"
echo "var2 $var2"

都会返回

var1 abc def
var2 111

关于具有返回值和返回字符串的 bash 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16134903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com