2014-12-07 54 views
-1

我試圖用System.exit(n)返回各種錯誤代碼。我需要這樣做來從Unix shell腳本訪問這些數字。使用System.exit(n)將值返回給Unix shell腳本

因此,例如在我的java程序中,我有System.exit(2)

然後在我的shell腳本我有:

var=$(java myProgram arguments) 

,當RAN將退出使用java程序System.exit(2),應該不會吧輸出整數2 「變種」?因爲它不。我錯過了什麼嗎?我需要做些什麼來讓它給我整數?

+0

shell語法將子命令的打印輸出分配給var。你想要'$?'。 – jtahlborn 2014-12-07 04:03:50

回答

1

VAR = $(...)

捕捉文本寫到標準輸出。 數字退出狀態是單獨返回的,並且可以作爲shell變量的值訪問$?

請注意,對於非交互式shell(即,如果此命令包含在腳本中),非零退出狀態將在默認情況下終止腳本。您可以通過在條件中使用該命令來阻止自動終止。例如:

var = $(...)|| ||回聲退出代碼是$?

+0

啊好的,這就是爲什麼。所以我打算在一個腳本中運行一堆這些java命令,我怎麼能得到$?每一次?我很困惑如何訪問這個。 – DrexelDragon93 2014-12-07 04:03:18

+0

@ user3059869'$?'會給你最後一個運行命令的返回值。每個命令後都要繼續閱讀。 'var = $?'會將數字存儲在'var'中。 – yellowantphil 2014-12-07 04:06:10

+0

是的,謝謝你的工作! – DrexelDragon93 2014-12-07 04:08:09