如何从bash shell脚本子例程返回数据?

给定以下两个可执行脚本:

----- file1.sh #!/bin/sh . file2.sh some_routine data ----- file2.sh #!/bin/sh some_routine() { #get the data passed in localVar=$1 } 

我可以将“数据”传递给另一个脚本中的子例程,但是我也想返回数据。

是否有可能从some_routine返回信息?

 eg: var = some_routine data 

让子程序输出一些东西,然后使用$()捕获输出:

 some_routine() { echo "foo $1" } some_var=$(some_routine bar) 

这是不允许的,只是设置一个全局变量的值(..所有的变量在bash中是全局的)

如果

 some_routine() { echo "first" echo "foo $1" } some_var=$(some_routine "second") echo "result: $some_var" 

他们没事。但结果似乎是由第一个“回声”决定的。另一种方式是使用“eval”。 some_var返回“第一”

 some_routine() { echo "cmj" eval $2=$1 } some_routine "second" some_var echo "result: $some_var" 

这样,some_var返回“秒”.bash不直接返回字符串。所以我们需要一些技巧。