ループから各csvファイルのレコードを取得中に問題が発生しました。

ループから各csvファイルのレコードを取得中に問題が発生しました。

要件がありますが、関数に引数を渡そうとするといくつかの問題があります。私の要件は次のとおりです。

テーブル、スキーマ、データベース、およびホストというキーワードを含むファイル名を持つ4つの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ファイルのレコードレベルで繰り返すときです。 2番目のループの「資産」は正確なID文字列を取得しません。つまり、削除コマンドは各文字列でのみ機能するため、ファイル(/SVP3458.CDC.STAT.COM/ORACLE DATABASE PREEST.db)のレコードです。

ループ条件で私がどこで間違っているのか教えてくれる人はいますか?

ベストアンサー1

おすすめ記事