给定以下两个可执行脚本:
----- 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不直接返回字符串。所以我们需要一些技巧。