다음과 같은 스크립트가 있습니다
for File in $(cat $IMPORT_PATH/*.txt); do
echo `date +'%m-%d-%Y %H:%M:%S'` "starting $File execute" > $Import_Success_Log
./cli.sh -a execute -i IPROD_$File -fn formrnt -user -password>> $Import_Success_Log
echo `date +'%m-%d-%Y %H:%M:%S'` "$File execute completed" >> $Import_Success_Log
done
./cli.sh -authfile "$AuthFile" -a list -t area -nof > $Import_List_File
for File in $(cat $IMPORT_PATH/*.txt); do
imp_area=`grep -iw "PRD_$File" "$IGC_Import_List_File" | grep -i prod`;
##Testing if imp_area variable has a value
if [ -z "$imp_area" ]; then
echo "- $DataBase Imp Area is not present .Please create." >> $Import_Failure_Log
else
Preview=`grep -iB 3 "The admin setting require" $Import_Success_Log |head -1 | awk '{print $4}'`;
Error=`grep -i error $Import_Success_Log`;
No_Import=`grep -i "does not exist" $Import_Success_Log`;
if [ -z "$Preview" -a -z "$Error" -a -z "$No_Import" ];then
echo "<li> $DataBase </li>" >> $DB_Import_Complete
else
echo "- $Prev is not imported as this database require a preview. >> $Import_Failure_Log
fi
fi
done
스크립트는 특정 경로의 txt 파일을 확인하고 특정 명령을 실행합니다.
이제 해당 경로에 txt 파일이 많을 수 있으므로 매번 다른 파일의 이름을 .txt가 아닌 다른 이름으로 바꿔야 합니다.
그래서 txt 파일을 스크립트에 변수/매개변수로 전달하고 싶습니다.
다음과 같습니다: sh script.sh abc.txt.
샘플 파일 콘텐츠: File.txt
SQL_SEVRER_ACCOUNT
Customer_DB
Customer_support_DB
Account_DB
또는 스크립트를 예약할 때 crontab 항목에 대한 인수로 사용됩니다.
저는 스크립팅을 처음 접했고 이에 대해 잘 모릅니다.
답변1
업데이트된 질문을 기반으로 업데이트하세요.
인수로 전달된 파일에서 데이터베이스를 읽으려면 다음을 사용할 수 있습니다.
for File in $(< "$1"); do
echo `date +'%m-%d-%Y %H:%M:%S'` "starting $File execute" > $Import_Success_Log
./cli.sh -a execute -i IPROD_$File -fn formrnt -user -password>> $Import_Success_Log
echo `date +'%m-%d-%Y %H:%M:%S'` "$File execute completed" >> $Import_Success_Log
done
(다른 모든 루프에서도 마찬가지)
그럼 전화해
sh your-script file.txt
스크립트는 매개변수를 사용하여 호출할 수 있으며, 이는 $1
등에서 사용할 수 있습니다. $2
따라서 귀하의 경우에는 이것을 할 수 있습니다
File="$1"
echo `date +'%m-%d-%Y %H:%M:%S'` "starting $File execute" > $Import_Success_Log
./cli.sh -a execute -i "IPROD_$File" -fn formrnt -user -password>> $Import_Success_Log
echo `date +'%m-%d-%Y %H:%M:%S'` "$File execute completed" >> $Import_Success_Log
./cli.sh -authfile "$AuthFile" -a list -t area -nof > $Import_List_File
imp_area=`grep -iw "PRD_$File" "$IGC_Import_List_File" | grep -i prod`;
그런 다음 스크립트를 다음과 같이 호출하십시오.
sh your-script filename
추신: 이는 스크립트의 나머지 부분(특히 코드 조각 이전에 실행된 부분) 동안 값이 $1
어떤 이유로든 변경되지 않는다고 가정합니다.
답변2
매개변수를 사용하여 스크립트를 실행하면 이러한 매개변수는 자동으로 변수 $1, $2, $3, ...에 저장됩니다.
따라서 스크립트를 다음과 같이 실행하면:
sh script.sh abc.txt
그런 다음 "abc.txt"는 변수 $1에 저장됩니다.