在循环中获取每个 csv 文件的记录时出现问题

在循环中获取每个 csv 文件的记录时出现问题

我有一个要求,当我尝试将参数传递给函数时遇到一些问题。以下是我的要求:

我有四种 csv 文件,其文件名包含关键字表、架构、数据库和主机。对于下面的例子:

Rebecca_Delete_Schema_01.csv
Rebecca_Delete_Schema_02.csv
Rebecca_Delete_Host_01.csv
Rebecca_Delete_Database_01.csv
Amable_Delete_Database_02.csv
Raja_Delete_Database_03.csv
Rebecca_Delete_Table_01.csv
Samar_Delete_Table_02.csv

我的要求是按表、模式、数据库的顺序删除这些文件,然后使用一些特定于应用程序的删除命令进行托管。

该文件有如下记录:

/SVP3458.CDC.STAT.COM/ORACLE DATABASE PREST.db --Database

/SVP3458.CDC.STAT.COM/ORACLE DATABASE PREST/COMM/EMAIL_DETAIL.tbl-- Table

对于主机和架构也是如此。

删除命令直接作用于这些标识字符串。下面是我的脚本:

process_deletecm()
{

ISCRED_PATH=/opt/IBM/InformationServer/Clients/iscreds/cli

cd $ISCRED_PATH;

sed -ie 's/ /\*/g ' $1

echo $1
for file in $(cat $1 )
  do
    for Asset in $(cat $file)
        do
          ./iscred.sh deletecm -dom profiling:8006 -authfile file.auth  -cm ''$Asset'' -f
       done
  done
}

DB_PATH=/opts/reports/AB/Table_Delete
for csvfile in $DB_PATH/*.[Cc][Ss][Vv]; do
filename="$(basename "$csvfile")"
if [[ "${filename,,}" = *table* ]]; then
echo $filename >> $DB_PATH/Tab_Delete_File.csv

elif [[ "${filename,,}" = *schema* ]]; then
echo $filename >> $DB_PATH/Sch_Delete_File.csv
elif [[ "${filename,,}" = *database* ]]; then
echo $filename >> $DB_PATH/DB_Delete_File.csv

elif [[ "${filename,,}" = *host* ]]; then
echo $filename >> $DB_PATH/Hst_Delete_File.csv
fi
done

process_deletecm $DB_PATH/Tab_Delete_File.csv
process_deletecm $DB_PATH/DB_Delete_File.csv

通过这些功能,我试图强制执行该执行顺序。

问题出在循环到每个 csv 文件的记录级别时。第二个循环中的“资产”没有给我带来确切的身份字符串。即文件中的记录(/SVP3458.CDC.STAT.COM/ORACLE DATABASE PREEST.db),因为删除命令仅适用于每个字符串。

谁能告诉我循环条件中哪里出错了?

相关内容