gpt4 book ai didi

shell - 在 shell 脚本中返回多个值的习语

转载 作者:行者123 更新时间:2023-12-03 10:37:44 30 4
gpt4 key购买 nike

是否有用于从脚本中的 bash 函数返回多个值的习语?

http://tldp.org/LDP/abs/html/assortedtips.html描述了如何回显多个值并处理结果(例如,示例 35-17),但如果某些返回值是带有空格的字符串,这将变得棘手。

一种更结构化的返回方式是分配给全局变量,例如

foo () {
FOO_RV1="bob"
FOO_RV2="bill"
}

foo
echo "foo returned ${FOO_RV1} and ${FOO_RV2}"

我意识到如果我需要在 shell 脚本中重新进入,我可能做错了,但我仍然感到非常不舒服,只是为了保存返回值而抛出全局变量。

有没有更好的办法?我更喜欢可移植性,但如果我必须指定 #!/bin/bash,这可能不是真正的限制。 .

最佳答案

这个问题是 5 年前发布的,但我有一些有趣的答案要发布。我刚开始学习bash,我也遇到了和你一样的问题。我认为这个技巧可能会有所帮助:

#!/bin/sh

foo=""
bar=""

my_func(){
echo 'foo="a"; bar="b"'
}

eval $(my_func)
echo $foo $bar
# result: a b

当子进程无法将值发送回其父进程时,此技巧对于解决问题也很有用。

关于shell - 在 shell 脚本中返回多个值的习语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2488715/

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