我知道如何返回退出代码,但我想返回在 shell 脚本函数中完成的操作的结果,这样我最终可以在另一个脚本或函数中使用它。
有点像
var1=$(myfunction)
function2 var1
myfunction 可以是 A+B=C 之类的东西
我查看了“return”,但它会返回一个代码,而不是一个值。
我正在查看展示如何编写函数的各种网站,但我没有看到您实际上是如何返回值的。
在 C++ 中,您将使用返回“变量名”,但 shell 脚本不允许这样做。它说变量不存在(这是合乎逻辑的,它是在函数中创建的变量,所以当函数被释放时,分配给它的内存空间就消失了)。不能使用全局变量,因为该函数可能在一个脚本中,而需要返回值的调用函数可能在另一个脚本中。
最佳答案
myfunction could be something like A+B=C
只回显结果:
$ myfunction() { echo $(($1+$2)); }
上面的 myfunction
将两个数字相加并回显结果。
然后就可以像之前一样捕获返回值:
$ var=$(myfunction 12 5)
$ echo $var
17
构造 var=$(myfunction)
从 myfunction
中捕获标准输出并将其保存在 var
中。因此,当您想从 myfunction
返回某些内容时,只需将其发送到标准,就像我们在上面的示例中对 echo
所做的那样。
如果您希望仔细格式化返回值,您应该考虑使用 printf
代替 echo。
更多:如何返回多个值
让我们定义一个产生两个输出的函数:
$ f() { echo "output1" ; echo "output2" ; }
$ f
output1
output2
如果你想分别取回那些值,最可靠的方法是使用 bash 的数组:
$ a=($(f))
上面的代码通过$(f)
执行f
,并将结果保存在名为a
的数组中。我们可以使用 declare -p
查看 a
中的内容:
$ declare -p a
declare -a a='([0]="output1" [1]="output2")'
关于bash - 从 shell 脚本返回一个值到另一个 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23256427/