【发布时间】:2018-02-27 19:57:26
【问题描述】:
我试图在 Unix Shell 脚本的 case 语句中运行 select 语句,但出现意外的文件结束错误。 我想根据以前在 shell 脚本中运行的 sql 脚本的输出运行特定的 select 语句。先前 sql 脚本的输出被假脱机到日志中,所需的模式被提取到一个变量中,该变量用于 case 语句。 我的脚本
#!/usr/bin/sh
exec > check_company_details.log 2>&1
sqlplus username/password@database << EOF
@check_company_details.sql $1
exit;
EOF
pool=$(cat company.log | grep dbPool | awk {'print $5'})
#everything is working till above steps
#if sqlplus command is removed from below case statements, correct output of echo is returned.
case $pool in
dbpool1)
echo "DBPool is POOL1"
sqlplus username/password@database<<EOF
select name from v\$database;
exit;
EOF
;;
dbpool2)
echo "DBPool is POOL1"
sqlplus username/password@database<<EOF
select name from v\$database;
exit;
EOF
;;
dbpool3)
echo "DBPool is DC4POOL1"
sqlplus username/password@database<<EOF
select name from v\$database;
exit;
EOF
;;
*)
echo No Results
;;
esac
错误信息:
*./check_company_details.sh: line 37: syntax error: unexpected end of file*
【问题讨论】:
-
在代码末尾的关键字
esac之后真的有一个星号吗?如果删除它会发生什么? -
不,esac后面没有星号(*),我会编辑代码,谢谢高亮
标签: sql bash oracle shell unix