2017-10-23 3 views
0

이메일 당 첨부 파일로 여러 개의 이메일을 보내야하는 스크립트를 작성하려고합니다. 메일 첨부 파일 크기 제한 때문입니다.쉘 스크립팅 : 루프에서 mailx를 호출

디렉토리에 zip 파일이 있고 file01.zip, file02.zip 등이며 약 4-5 개의 파일이 있습니다.

-- File count is normally passed in 
numFiles=5 
fileCounter=1 
datestr="`date +"%m/%d/%Y"`" 

while [ $fileCounter -le $numFiles ] 
do 
    SUBJECT_LINE="Weekly files ($fileCounter of $numFiles) - $datestr" 

    echo "[`date`] E-mailing file ($fileCounter of $numFiles) ... " 
    ZIPFILE="file0$fileCounter.zip" 
    echo $ZIPFILE 
    ls -ltr $ZIPFILE 
    mailx -a "$ZIPFILE" \ 
      -r [email protected] \ 
      -s "$SUBJECT_LINE" \ 
      $TO_LIST < /dev/null 
    echo "[`date`] Done" 
    fileCounter=$(($fileCounter + 1)) 
done 

mailx를 루프에서 호출하려고합니다. 나는뿐만 아니라 다음을 시도

내가 에코 사용하여 인쇄하지만 파일이 있지만 루프에서 mailx의 명령은 다음을 반환 할 때 ZipFile에 이름을 볼 수 있어요
for file in file0*.zip 
do 
... 


done 

가 :

No such file or directory 

콘솔에서 동일한 mailx 명령을 실행하여 전자 메일을 보낼 수 있습니다. 루프없이 하나의 전자 메일을 보낼 수도 있지만 루프 내부에서 그렇게하면 문제가 발생할 수 있습니다. 내가 놓친 게 있니?

+0

안녕하세요 Amar 내가보고있는 것은 전체 경로를 추가하지 않고 파일의 이름 만 선언한다는 것입니다. 셸 스크립트가 파일의 위치를 ​​인식하지 못하기 때문에 파일의 전체 경로를 사용해보십시오.)에 있습니다. variablare'ZIPFILE'에 전체 경로를 추가하십시오. 'ZIPFILE = "이/IS/THE/FILES/PATH/file0 $ {fileCounter} .zip"' –

+0

게시하기 전에 전체 경로를 테스트에 추가했습니다. 그것도 작동하지 않았다. 위의 코드 스 니펫 앞의 줄에 "파일이있는 디렉토리로 이동"을 시도했습니다. 어느 쪽도 효과가 없었다. – Amar

답변

0

mailx에 첨부 파일로 전달되는 파일 이름 ($ ZIPFILE)에 눈에 보이지 않는 문자가 하나 이상있을 가능성이 큽니다. 오늘 문제 해결 중에 스크립트의 일부를 다시 입력하고 문제를 해결했습니다. 그러나 위의 스크립트는 훌륭합니다.