Lo que Max dice es correcto. Prueba este script modificado
#!/bin/sh
echo "Please enter evaluate database username"
read eval_user
echo "Please enter evaluate database password"
read eval_pass
echo "Please enter the database name"
read db_name
LOGFILE=shell_log.txt
sqlplus -s /nolog <<-EOF>> ${LOGFILE}
WHENEVER OSERROR EXIT 9;
WHENEVER SQLERROR EXIT SQL.SQLCODE;
connect $eval_user/[email protected]$db_name
DBMS_OUTPUT.put_line('Connected to db');
EOF
sql_return_code=$?
if [ $sql_return_code != 0 ]
then
echo "The upgrade script failed. Please refer to the log results.txt for more information"
echo "Error code $sql_return_code"
exit 0;
fi
Tenga en cuenta el uso de sql_return_code para capturar el código de retorno de SQLPLUS.
La declaración DBMS_OUTPUT debería fallar con el error:"SP2-0734:inicio de comando desconocido...". Puede encontrar el mensaje de error en el archivo de registro.
Es posible atrapar los errores sp2 en SQLPLUS 11g utilizando la función de registro de errores. Consulte http://tkyte.blogspot.co.uk/2010/04/new-thing-about-sqlplus.html para obtener más información.