簡體   English   中英

shell在單個if條件中編寫多個條件的腳本

[英]shell scripting multiple conditions in single if condition

在下面的代碼中,在/ bin / sh中,當滿足第一個條件時為什么評估-o的第二個條件。 方案是$ output在單獨的行中有多個“ ORA-”字符串,但沒有“ INVALID_OBJECTS”字符串。 所以第一部分是正確的,但是第二部分變成

“” -gt 0

失敗了

sh:[:缺少`]'

if [ "`echo "$output" | grep ORA-`" -o "`echo "$output" | awk '/INVALID_OBJECTS/{getline;getline;print $0}' | sed 's/\s//g'`" -gt 0 ]; then
        echo -e "\n*** ERROR:  ***\n"
fi

更新:$ output保存pl-sql塊的stdout。 最終用戶在執行pl-sql塊期間輸入了Ctrl + C,這導致與SQL * Plus的連接斷開。 因此,標准輸出最終出現多個“ ORA-nnnnn”錯誤。 如果沒有連接丟失,我將在$ output中得到以下幾行,這些行在-o檢查的左側進行檢查。

INVALID_OBJECTS  
_ _ _ _ _ _ _ _ _ _  
                   3

好吧,讓我們先刪除多余的引號來簡化您的表達式。 測試命令基本上可以歸結為:

[ `echo $output | grep ORA-` -o `echo $output | awk '/INVALID_OBJECTS/{getline;getline;print $0}' | sed 's/\s//g'` ]

所以,你有基本為零或多個字(取決於grep的收益率是什么)在左側-o ,其次是零或一個字(這取決於AWK收益率)的右側-o

現在我不知道您要在這里實現什么,但是從此分析可以看出,您的命令沒有任何意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM