실행 시 txt 파일을 스크립트에 매개변수로 전달합니다.

실행 시 txt 파일을 스크립트에 매개변수로 전달합니다.

다음과 같은 스크립트가 있습니다

    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에 저장됩니다.

관련 정보