【发布时间】:2016-12-04 01:22:47
【问题描述】:
我是 shell 脚本的新手。 我正在为 DBA 自动化编写代码,其中我有 master.sql 文件有 n 个 sql 的声明。这些 sql 被放置在特定的文件夹中。 我有一个脚本,它正在调用这个 master.sql 并立即间接执行这些 sqls 并保存在日志文件中
sqlplus 命令正在一次保存 master.sql 中声明的所有 sql 的输出 我想要的是它必须在第一个 sql 失败时停止执行并返回失败的特定 sql 的错误或要求回滚并询问你是否要继续? 尝试在任何时候使用 sqlplus,, sqlerror ,$?没有任何效果
sqlplus ${USER}/${PASS}@$SID @master.sql > /home/deploy/vidya/properties/result/result.log
现在我要做的是......当任何 sql 从一开始就失败并在命令行上提示错误并指定哪个 sql 失败时,我想停止执行 sqls
master.sql
SET ECHO ON
@/home/deploy/vidya/properties/001_dba_demo.sql
@/home/deploy/vidya/properties/003_dba_demo1.sql
@/home/deploy/vidya/properties/002_dba_demo2.sql
@/home/deploy/vidya/properties/004_dba_demo2.sql
EXIT
我的 .sh 脚本正在调用 master.sql 并且它工作正常
#!/bin/bash
echo "Enter schema Name you want to connect: "
read USER
echo "Enter password: "
read -s PASS
#echo "Enter Oracle SID for the environment you want to connect with : "
#read SID
echo "Enter Environment for the environment you want to connect with : "
read ENV
echo "Enter Oracle SID for the environment you want to connect with : "
read SID
export ORACLE_SID=${SID}
if [ $ENV == UAT ]
then
echo "Connected withh UAT ORACLE HOME:"
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db_1
elif [ $ENV == PROD ]
then
echo "Connected with PROD ORACLE HOME:"
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db_1
else
echo "Wrong Environment Entered :"
fi
export PATH=$ORACLE_HOME/bin:$PATH
echo "want to execute sql? y/n"
read yn
sqlplus ${USER}/${PASS}@$SID @master.sql > /home/deploy/vidya/properties/result/result.log
**
谁能帮忙?**
【问题讨论】:
标签: bash shell unix build-automation devops