Bash
使用 Mutt 發送特定文件
我正在嘗試使用 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=...
然後想知道為什麼你的腳本壞了