マックスの言うことは正しい。この変更されたスクリプトを試してください
#!/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
SQLPLUSリターンコードをキャプチャするためにsql_return_codeを使用していることに注意してください。
DBMS_OUTPUTステートメントは、エラー「SP2-0734:不明なコマンドの開始...」で失敗するはずです。エラーメッセージはログファイルにあります。
エラーロギング機能を使用して、SQLPLUS11gでsp2エラーをトラップすることができます。詳細については、http://tkyte.blogspot.co.uk/2010/04/new-thing-about-sqlplus.htmlをご覧ください。