【问题标题】:How to emulate returning arbitrary values from functions in bash? [duplicate]如何模拟从bash中的函数返回任意值? [复制]
【发布时间】:2016-03-07 13:10:09
【问题描述】:

Bash 函数只是语句,它们不返回值。任何人都可以分享编写在 bash 中返回值的函数的最佳实践吗?

假设我有一个连接两个字符串的函数:

function JoinStrings {
    returnValue="$1$2"
}

如何在我的代码中重用这个函数?如何将returnValue 返回给调用者?我应该在这个函数调用之后将它用作全局吗?这导致到处都有全局变量的许多错误......如何在bash中实现代码重用?

【问题讨论】:

  • "Function" 对这个 shell 的命名实在是太糟糕了; “子程序”会更好,因为它们实际上并没有返回值。 (即使return 只是设置退出状态,其语义与异常的共同点多于返回值。)

标签: bash function shell command-line


【解决方案1】:

只输出值。

function JoinStrings {
    echo "$1$2"
}
JoinStrings a b         #ab
x=$(JoinStrings a bc)   #x is now abc

【讨论】:

  • 哇,太好了!谢谢!
【解决方案2】:

您可以使用echo“返回”任意值:

join_strings() {
    echo "$1$2"
}

cat="cat"
dog="dog"
catdog=$(join_strings $cat $dog)
echo $catdog
# catdog

【讨论】:

  • 这很酷——我不知道。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
  • 2021-02-14
  • 1970-01-01
  • 1970-01-01
  • 2020-04-06
  • 1970-01-01
相关资源
最近更新 更多