gpt4 book ai didi

linux - 在 bash 函数中返回值

转载 作者:太空狗 更新时间:2023-10-29 12:13:01 25 4
gpt4 key购买 nike

我正在使用一个不断增长的 bash 脚本,在这个脚本中我有很多函数。其中一个函数应该返回一个变量值,但我遇到了一些语法问题。下面是代码示例。

ShowTags() {
local tag=0
read tag
echo "$tag"
}

selected_tag=$(ShowTags)
echo "$selected_tag"

从一篇 Linux Journal 文章中提取了这段代码,但问题是它似乎不起作用,或者它可能起作用但我遗漏了一些东西。基本上每当函数被调用时脚本挂起并且不输出任何东西,我需要 CTRL+C 返回到 CLI。

相关文章如下。

http://www.linuxjournal.com/content/return-values-bash-functions

所以我的问题是这是返回值的正确方法吗?有没有更好或更可靠的方法来做到这一点?如果有请给我一个例子,这样我就可以在不使用全局变量的情况下解决这个问题。

编辑:

这种行为现在让我很反感。我正在使用以下脚本。

ShowTags() {  

echo "hi"
local tag=0
read tag
echo "$tag"
}

selected_tag=$(ShowTags)
echo "$selected_tag

基本上 bash 的行为就像读取命令发生在函数顶部的 echo 标记之前一样。一旦我传递了一些要阅读的东西,它就会运行 top echo,并完成脚本的其余部分。我不确定为什么会这样。这正是我的主脚本中发生的事情。

最佳答案

echo "hi" 更改为 echo "hi">/dev/tty

您没有立即看到它的原因是 $(ShowTags) 捕获了函数的所有标准输出,并将其分配给 selected_tag。因此,在回显该变量之前,您看不到任何内容。

通过将提示重定向到 /dev/tty,它总是立即显示在终端上,而不是发送到函数的 stdout,因此它不会被捕获命令替换。

关于linux - 在 bash 函数中返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35279013/

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