我有一个使用变量赋值的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}"
答案 0 :(得分:1)
问题在于这一行:
if [ "${COUNT_NEW}" > 0 ]; then
>
在shell命令中有特殊含义,它用于输出重定向。在test
命令中,-gt
选项用于执行大于的比较。所以改成它:
if [ "${COUNT_NEW}" -gt 0 ]; then