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
스크립트가 작동합니다.