以下のコードの/ bin/shでは、最初の条件が満たされたときに-oの2番目の条件が評価されるのはなぜですか? このシナリオでは、$ outputには別々の行に複数の "ORA-"文字列がありますが、 "INVALID_OBJECTS"文字列はありません。だから、最初の部分は真実であるが、第二部は、UPDATE単一の条件のシェルスクリプト複数の条件
sh: [: missing `]'
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
で失敗
"" -gt 0
次のようになります。 $出力はPL-SQLブロックの標準出力を保持しています。エンド・ユーザーは、pl-sqlブロックの実行中にCtrl + Cを入力したため、SQL * Plusへの接続が失われました。したがって、stdoutは複数の "ORA-nnnnn"エラーを持つことになりました。接続が失われていなければ、-oチェックの左側で$ outputに次の行があるはずです。
INVALID_OBJECTS
_ _ _ _ _ _ _ _ _ _
3
'echo $ output | grep ... ||エコー$出力| awk ... || echo -e "\ n ***エラー:*** \ n" '? –