요구 사항이 있는데 함수에 인수를 전달하려고 할 때 몇 가지 문제가 있습니다. 내 요구 사항은 다음과 같습니다.
테이블, 스키마, 데이터베이스 및 호스트라는 키워드가 포함된 파일 이름을 가진 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 파일의 레코드 수준으로 반복할 때입니다. 두 번째 루프의 "자산"은 정확한 ID 문자열을 가져오지 않습니다. 즉, 삭제 명령은 각 문자열에서만 작동하므로 파일(/SVP3458.CDC.STAT.COM/ORACLE DATABASE PREEST.db)의 레코드입니다.
루프 조건에서 내가 어디에서 잘못되고 있는지 말해 줄 수 있는 사람이 있습니까?