2013-05-02 37 views
14

我有两个Bash脚本。父脚本调用下标执行一些操作并返回一个值。我怎样才能从脚本中返回一个值到父脚本?在下标中添加return并捕获父值中的值不起作用。Bash - 从下标返回到父脚本的值

+1

看看这个答案从昨天:http://stackoverflow.com/a/16325765/1983854 - 它可以帮助很多 – fedorqui 2013-05-02 12:29:43

回答

24

我假设这些脚本在两个不同的进程中运行,即您不是“采购”其中的一个。

这取决于你想要返回什么。如果你希望只在0和255之间,以返回退出代码,那么:如果你想返回一个字符串

# Child (for example: 'child_script') 
exit 42 


# Parent 
child_script 
retn_code=$? 

,那么你将不得不这样做,通过标准输出(或文件)。有捕获的几种方法,最简单的就是:

# Child (for example: 'child_script') 
echo "some text value" 

# Parent 
retn_value=$(child_script) 
+1

回声方法是否通过子脚本或最后一行返回所有echo'd? – 2015-05-21 23:43:28

+0

@AakilFernandes:在这种情况下,'echo'写入给它的行:示例中的“一些文本值”。但是,父母正在捕获孩子的所有标准输出,不管它是否来自'echo“。这可能是由换行'$'\ n''分隔的多行 – cdarke 2015-05-22 07:48:09

-3

从下标返回一个值并检查变量$?其中包含返回值

+1

“返回”在这里是不明确的,因为'return'语句只能用于从函数返回,而不能用于脚本。确切地说,你需要使用'exit'语句从脚本返回。 – chepner 2013-05-02 13:25:09

+1

@chepner:实际上'return'也可以从一个“sourced”文件('.'或'source'命令)中使用,但那是一个脚本吗? – cdarke 2013-05-02 13:52:48

+0

啊,棘手。我想正确的答案是“酌情使用'return'或'exit'”。 – chepner 2013-05-02 14:11:02