[英]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.