我想使用shell脚本运行SQL代码,并返回SQL查询是否成功执行的消息。为此,我使用了下面给出的unix脚本。
#!/bin/sh
sqlplus -S hr/hr@xe<<EOF
@emp.sql
EOF
var1=$(cat /cygdrive/d/scripts/output.txt | grep -c 'COUNT')
if [ $var1 -ge 1 ];
then
echo "success"
else
echo "failure"
fi
exit;
和emp.sql(称为sql文件)为
SET ECHO OFF
SPOOL D:\scripts\output.txt
SET LINESIZE 100
SET PAGESIZE 50
SELECT count(*) FROM employees;
SPOOL OFF;
EXIT 0;
当我执行脚本时,我输出为
COUNT(*)
----------
107
./script1.sh: line 13: syntax error: unexpected end of file.
我不知道应该把EOF声明准确地放在哪里。此外,我没有得到状态消息,无论是成功还是失败,我想作为输出。请帮忙。提前致谢
答案 0 :(得分:0)
SPOOL D:\scripts\output.txt
不是这种Windows引用文件的方式,在shell脚本中,您将文件称为/cygdrive/d/scripts/output.txt
。我假设你使用linux shell执行所以我执行你的脚本更改sql文件中的假脱机行。它工作正常。
编辑:对于假脱机的\
路径,您使用的output.txt
也将导致sqlplus终止。因此错误line 13: syntax error: unexpected end of file.
可能会在路径中添加引号或使用与shell中使用的文件路径相同的文件路径