我想检查 $Y 中是否有“错误”或“ORA-”。如果出现错误则退出
Y=`sqlplus -s user/passwd<< EOF
exec test_Proc;
exit;
EOF`
if [ echo $Y | awk '/ERROR/ || /ORA-/' ] ; then
exit 1
fi
但这行不通。
答案1
如果你正在运行,bash
你可以使用正则表达式匹配来做到这一点:
if [[ $Y =~ (ERROR|ORA-) ]]; then
echo error
fi
或者,如果你坚持的话,你也可以这样做awk
:
if ! printf '%s\n' "$Y" | awk '/ERROR|ORA-/ {exit 1}'; then
echo error
fi
重点是,awk
使用正则表达式,而不是 shell 表达式逻辑。
最简单的方法可能就是使用grep
:
printf '%s\n' "$Y" | egrep -q 'ERROR|ORA-' && echo error