我有一个简单的数据库查询,我将其包装在我的bash脚本中。
如果我的查询检索了一行,我想做几件事。如果我的查询检索零行,我想优雅地终止我的脚本。
检查我的脚本是否检索零行的最佳方法是什么?你能提供一些指示吗?
谢谢。
答案 0 :(得分:1)
这是一个工作bash脚本,用于从DB获取行数。只需传递变量并用你的部分替换部分sql。
#!/bin/bash
NUMROWS=`$ORACLE_HOME/bin/sqlplus -s $DBUSER/$DBPASSWORDd@//$DBHOST:$DBPORT/$ORACLE_SID << EOF
WHENEVER SQLERROR EXIT FAILURE ROLLBACK
SET HEADING OFF
SET FEEDBACK OFF
SET PAGES 0
select count(*) from dual;
exit success
EOF`
echo $NUMROWS
提示: 将最后一行echo $ NUMROWS替换为退出$ NUMROWS,如果没有记录,您的脚本将正常退出。如果你想做其他事情,请用bash if语句包装它,如下所示。
if [ $NUMROWS -lt 1 ]; then
#exit gracefully
exit 0;
fi
# do something
答案 1 :(得分:0)
让我们调用命令do_it
。然后,想到的最简单的事情是:
do_it | while read x; do
# do whatever you want ...
done
在这种情况下,如果没有结果,则不会运行该块
答案 2 :(得分:0)
我明白了:诀窍是使用/ dev / null。
#!/bin/bash
DB2INSTANCE=db2inst1
BIN="/users/db2inst1/sqllib/bin"
OUT=`${BIN}/db2 connect to myschema > /dev/null
${BIN}/db2 -x "SELECT CURRENT_DATE FROM SYSIBM.SYSDUMMY1 WITH UR"
${BIN}/db2 quit > /dev/null
`
echo $OUT
希望这有帮助。