"ERROR" 또는 "ORA-"를 확인하십시오.

"ERROR" 또는 "ORA-"를 확인하십시오.

$Y에 "ERROR" 또는 "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쉘 표현식 논리가 아닌 정규 표현식을 사용한다는 것입니다.

가장 쉬운 방법은 아마도 다음을 사용하는 것입니다 grep.

printf '%s\n' "$Y" | egrep -q 'ERROR|ORA-' && echo error

관련 정보