2017-02-10 98 views
0

所以我已经阅读了一些其他帖子,并尝试了答案,但我仍然遇到这个问题,所以我想在这里发表一个问题,看看是否有其他人有任何其他想法。请记住,我是bash的新手,所以我很在意什么可用于目前我所寻找的东西。Bash Mutt电子邮件附件错误无法统计:没有这样的文件或目录

我试图自动创建一个文件,然后将其发送给我的过程。以上所有都是好的,直到我尝试自动发送电子邮件给自己的文件。

我有这行代码

echo“report”|狗 - “$ USEREMAIL” -s “报告” -a “my_scripts/cid_reports/trb345432.csv”

当改掉运行此命令时,它抛出像

无法统计my_scripts/cid_reports错误/trb345432.csv:没有这样的文件或目录 my_scripts/cid_reports/trb345432.csv:无法附加文件。

关于如何解决这个问题的任何想法?我认为mutt对于处理这个问题很好,我打算玩邮件功能,看看我能否取得任何成功。

该系统看起来正在运行 Mutt 1.4.2.2i(2006-07-14) Copyright(C)1996-2002 Michael R. Elkins等人。 Mutt带绝对不担保;有关详细信息,请键入`mutt -v

+0

您的错误消息引用与您在代码中指定的文件不同的文件。 – chepner

+0

Bah,我忘了编辑它来匹配,我缩短了一些代码。文件名应该完全一样。 – Rob

回答

1

no such file or directory通常意味着无法找到该文件。由于您使用的是相对路径,因此您可能位于不同的目录中?

如果从运行脚本的相同目录输入cat my_scripts/cid_reports/trb345432.csv,那么该文件是否在那里?

或其他。如果你使用绝对路径(通常是'/ home /'uid'/ my_scripts/cid_reports/trb345432.csv',但你的路径可能不同),脚本是否找到该文件?

(或者应该这样一直在回答中,尽管它已经试图通过找出错误引导代替评论?)

+0

这就是烦人的部分,如果我把它放在文件名本身IE my_scripts/cid_reports/trb345432.csv 其罚款,如果我把它作为一个变量引用它会引发该错误。 – Rob

+0

所以,你的命令实际上是'echo“报告”|“ mutt - “$ USEREMAIL”-s“报告”-a“$ some_filename”'?为了调试目的,试着放一个'echo $ some_filename; ls $ some_filename'在您拨打MUTT之前。 –

+0

更好的是,使用'declare -p some_filename'。 – chepner

0

从您的意见LJM Dullaart的答案,你实际上是存储在文件路径一个变量,然后使用它是这样的:

FILE="~/my_scripts/cid_reports/file.csv" 
echo "report" | mutt -- "$USEREMAIL" -s "report" -a "$FILE" 

如果这是你在做什么,问题是,~是双引号,因此不会被扩大到实际路径到您家目录。因此,它正在寻找在当前工作目录下字面上命名为“〜”的子目录,但没有找到它。为了~将扩大到的路径,你的主目录,把它和下面的/未加引号,像这样:

file=~/"my_scripts/cid_reports/file.csv" 
echo "report" | mutt -- "$useremail" -s "report" -a "$file" 

请注意,我也切换变量名称为小写。这是避免与具有特殊含义的各种环境变量冲突的最佳实践;特别的都是大写字母,所以如果你使用较低或混合大小写,你永远不会意外地超过它们。

相关问题