Mutt를 사용하여 특정 파일 보내기

Mutt를 사용하여 특정 파일 보내기

Mutt를 사용하여 폴더의 특정 파일을 보내려고 합니다. 매초마다 사진을 찍고 30초 분량의 사진이 들어 있는 "이미지 캐시"라는 폴더가 있습니다. Mutt를 이용해서 15초짜리 사진을 이메일에 첨부해서 보내주고 싶어요. 이미지당 약 30KiB이므로 이메일에 15KiB를 넣는 것은 문제가 되지 않습니다.

지금까지 나는 이 게시물의 대부분의 코드를 사용해 왔습니다.여기내 파일 시스템과 일치하도록 몇 가지 변경 사항을 적용했습니다.

이것은 내가 사용하는 코드입니다:

#!/bin/bash
DATE=$(date +%F)
MESSAGE="IMAGES" 
FILES=$(find /path/to/directory -not -newermt '-15 seconds' | sed 's/ /\\  /g' | grep ".jpg")


if [ -z "$FILES" ]; then
MBODY="No images were found that match search criteria."
echo "$MBODY" | mutt -s "Data files for $TODAY" $EMAILS
fi

echo $MESSAGE | mutt -s "Images taken on $DATE" -a "$FILES" -- [email protected]

이 오류를 뱉어냅니다.

Can't stat /My/Directory/Image1.jpg
/My/Directory/Image2.jpg: No such file or directory
/My/Directory/Image3.jpg: unable to attach file.

어떤 도움이라도 대단히 감사하겠습니다 :). 미리 감사드립니다

답변1

인용했으므로 "$FILES"단일 문자열을 -a옵션에 전달하고 있습니다. 거기에 단일 파일을 전달해야 합니다.

당신이 해야 할 일은 파일을 배열에 저장하는 것입니다. 이것은 공백이 포함된 여러 문자열을 처리하는 가장 좋은 방법입니다. 귀하의 파일 이름에 개행 문자가 포함되어 있지 않다고 가정합니다.

# read the output of `find` into an array, one element per line
mapfile -t files < <(find /path/to/directory -name '*.jpg' -not -newermt '-15 seconds')
# ...
echo "$message" | mutt -s "Images taken on $date" -a "${files[@]}" -- [email protected]
# ...................................................^^^^^^^^^^^^^

인수 확장의 정확한 형식으로 인해 각 배열 요소는 명령에서 별도의 단어가 됩니다.

ALLCAPSVARNAMES를 사용하는 습관을 버리십시오. 언젠가는 이를 사용 PATH=...하고 스크립트가 왜 손상되었는지 궁금해하게 될 것입니다.

관련 정보