Bash

使用 Mutt 發送特定文件

  • October 26, 2015

我正在嘗試使用 Mutt 發送文件夾中的特定文件。我有一個名為“圖像記憶體”的文件夾,每秒拍攝一張照片,裡面有 30 秒的照片。我想使用 Mutt 將 15 秒的圖片作為附件放入電子郵件中,然後發送給我。每張圖片大約 30 KiB,在電子郵件中放入 15 個應該不是問題。

到目前為止,我一直在使用這篇文章中的大部分程式碼,進行了一些更改以匹配我的文件系統。

這是我正在使用的程式碼:

#!/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" -- myemail@domain.com

吐出這個錯誤:

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

任何幫助是極大的讚賞 :)。提前致謝

由於您正在引用"$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[@]}" -- myemail@domain.com
# ...................................................^^^^^^^^^^^^^

參數擴展的確切形式將導致每個數組元素在命令中作為單獨的單詞。

改掉使用 ALLCAPSVARNAMES 的習慣:有一天你會使用PATH=...然後想知道為什麼你的腳本壞了

引用自:https://unix.stackexchange.com/questions/238720