2013-05-02 33 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