变量赋值创建空文件(Shell / Netezza)

时间:2014-09-03 20:28:05

标签: sql shell variables netezza

我有一个使用变量赋值的shell脚本来保存if语句中的比较值。这些变量是通过SQL语句生成的。我把echo用于调试以确认创建的位置,但我不确定是什么导致这些语句创建目录。

这是一个循环通过几个数据库寻找要添加的“新”值。我发现当有新值时,文件显示为数字。今天的运行看起来如下,因为我们没有要添加的新记录:

-rw-r--r--    1 bkp   nz                0 Sep 03 16:19 0
-rw-r--r--    1 bkp   nz                0 Sep 03 16:19 2394

代码部分给我一个问题如下(在脚本顶部调用#!/ bin / sh)并存在于循环通过数据库列表进行搜索的while循环中:

    COUNT_NEW=`${NZUTL_BIN}/nzsql -host ${DB_HOST} -db ${DB_LOOP} -u ${DB_USER} -pw ${DB_PASSWD} -A -t -c "select count(*) from tmp_retention_driver"`
    echo "COUNT_NEW now equals ${COUNT_NEW}"
    COUNT_OLD=`${NZUTL_BIN}/nzsql -host ${DB_HOST} -db tmpdb01 -u ${DB_USER} -pw ${DB_PASSWD} -A -t -c "select count(*) from new_retention_driver"`
    echo "COUNT_OLD now equals ${COUNT_OLD}"

    if [ "${COUNT_NEW}" > 0 ]; then

            echo "Inserting ${COUNT_NEW} records from  ${DB_LOOP}"

            ${NZUTL_BIN}/nzsql -host ${DB_HOST} -db tmpdb01 -u ${DB_USER} -pw ${DB_PASSWD} -A -t -c "insert into new_retention_driver (tablename, owner, createdate, dbname, status_cd, max_arch_retention) select tablename, owner, createdate, database, 'R', max from ${DB_LOOP}..tmp_retention_driver" -o ${LOG_FILE}/${DB_LOOP}_new_record_inserts.log

            COUNT_OLD_UPDATE=`${NZUTL_BIN}/nzsql -host ${DB_HOST} -db tmpdb01 -u ${DB_USER} -pw ${DB_PASSWD} -A -t -c "select count(*) from new_retention_driver"`
            echo "COUNT_OLD_UPDATE now equals ${COUNT_OLD_UPDATE}"

1 个答案:

答案 0 :(得分:1)

问题在于这一行:

if [ "${COUNT_NEW}" > 0 ]; then

>在shell命令中有特殊含义,它用于输出重定向。在test命令中,-gt选项用于执行大于的比较。所以改成它:

if [ "${COUNT_NEW}" -gt 0 ]; then