mailx 명령을 통해 Zip 파일 보내기

mailx 명령을 통해 Zip 파일 보내기

zip_final.zip이라는 zip 파일이 있습니다.

이 파일을 첨부파일로 첨부해서 메일을 보내야 합니다.

또한 메일 본문의 zip 파일에 있는 모든 파일 이름을 표시해야 합니다.

나는 이 코드를 가지고 있습니다 :

export files_list=`unzip -Zl zip_final.zip`

mailx -a ${zip_final.zip} -s "Files list | Zip file" << EOM

   Hi team, sent zip file.
   Files inside it are  :  $files_list

   Thank you.

EOM

하지만 이렇게 하면 이메일이 전송되지 않습니다. 마치 메일 명령이 호출되거나 실행되지 않는 것과 같습니다. 오류 메시지도 표시되지 않습니다.

mailx 명령을 사용하여 이 zip 파일을 첨부 파일로 보내고 메일 본문의 zip 파일 내부에 있는 모든 파일 이름을 표시하는 방법을 제안할 수 있는 사람이 있습니까?

답변1

수정된 예제 스크립트는 다음과 같습니다.

#!/bin/bash
#<$1    : zip file name
#<$2 ...: recipients
file=$1
shift
(
echo "  Hi team, sent zip file."
echo "  Files inside it are  :"
unzip -l "$file"
echo "  Thank you."
) |
mailx -A "$file" -s "Files list | Zip file" "$@"

무엇을 놓치고 있나요?

  • mail -A코딩되다-a
    편집: 이것은 mailx 구현에 따라 다릅니다.
  • unzip -Z예기치 않은
    편집: 출력 스타일을 변경합니다.
  • 메일 수신자 없음
  • ${zip_final.zip}무의미한

답변2

다음과 같이 시도해 볼 수 있습니다.

export files_list=`unzip -Zl zip_final.zip`
uuencode zip_final.zip zip_final.zip |mailx  -s 'Files list | Zip file' << EOM

   Hi team, sent zip file.
   Files inside it are  :  $files_list

   Thank you.
EOM

uuencode이 명령은 바이너리 파일을 ASCII로 "변환"하고 이메일을 통해 보낼 수 있습니다.

답변3

명령이 실행되지 않는 이유는 -a ${zip_final.zip}단지 -a zip_final.zip.

${zip_final.zip}평균변수 값그것은이라고 zip_final.zip. 그러나 이는 쉘이 해석할 수 없는 잘못된 변수 이름이므로 오류를 반환합니다: bad substitution. 이것이 문제인 것 같습니다.

${zip_final.zip}다음으로 바꾸면 zip_final.zip스크립트가 작동합니다.

관련 정보