2017-05-10 35 views
0

所以這是我的情況。2個數字的非零值,並在shell中返回退出代碼

我希望能夠退出RC/RC1具有非零值。如果RC爲0,則執行以下代碼RC1以非零退出代碼返回(最佳情況)如果RC不爲零且RC1也爲非零,我將錯過RC1的退出代碼(這意味着我不會能夠使用RC1的退出代碼)。我怎樣才能發送正確的退出代碼?實質上,我想通過電子郵件發送非零變量

if [ $RC -ne 0 ] || [ $RC1 -ne 0 ]; then 
     if [ $RC -ne 0 ]; then 
     exit $RC 
     else 
     exit $RC1 
fi 
+0

你寫的RC是非零的,RC1也是非零的。當代碼返回該值而非RC1時,您的代碼優先於RC。您不能返回超過1個退出代碼! –

回答

1

您想要同時返回兩個退出代碼嗎?我想,在開車的時候,你也想同時坐在前排座位和後排座位上。你可以做到這一點,但你需要一個特殊的車。以下是讓這樣的車兩個想法:

  • 如果你知道,在這個上下文中的每個退出代碼必須是1位數,你可以返回類似$((RC*10+RC2)) - 我使用bash/zsh的語法在這裏,因爲你沒有說你正在使用哪個外殼。如有必要,您必須將其適應您的外殼。

  • 你能適應你的腳本接口,通過打印類似「$ RC1 $ RC2」到標準錯誤,如果其中至少有一個是非零的,即:

    if [ $RC -ne 0 ] || [ $RC1 -ne 0 ]; then 
        echo "$RC $RC1" 1>&2 
        exit 1 
    else 
        exit 0 
    fi 
    

在在這兩種情況下,調用過程必須拆分合並的退出代碼才能恢復原來的代碼。

相關問題