2017-02-10 4 views
0

Donc, j'ai lu quelques autres messages et essayé les réponses, mais je continue à courir dans ce problème, donc je voulais poser une question ici et voir si quelqu'un d'autre avait d'autres idées. Gardant à l'esprit je suis assez nouveau à bash donc je suis incertain sur ce qui est actuellement disponible pour ce que je cherche. J'essaye d'automatiser un processus qui crée un fichier puis me l'envoie. Tout ce qui précède est bien, jusqu'à ce que j'essaie de m'envoyer automatiquement le fichier par courriel.Email Bash Mutt avec erreur de pièce jointe Impossible de stat: Aucun fichier ou répertoire

J'ai cette ligne de code pour elle

echo "rapport" | Mutt - "rapport" "USEREMAIL de $" -s -a "my_scripts/cid_reports/trb345432.csv"

Quand il essaye d'exécuter cette commande, il renvoie une erreur comme

Impossible stat my_scripts/cid_reports /trb345432.csv: Aucun fichier ou répertoire de ce type my_scripts/cid_reports/trb345432.csv: impossible de joindre le fichier.

Des idées sur comment je peux résoudre ce problème? Je pensais que Mutt était bon pour gérer ça, je vais jouer avec la fonction mail et voir si je peux obtenir un succès avec ça.

Le système semble fonctionner Mutt 1.4.2.2i (2006-07-14) Copyright (C) 1996-2002 Michael R. Elkins et autres. Mutt est livré avec ABSOLUMENT AUCUNE GARANTIE; Pour plus de détails, tapez `mutt -v

+0

Votre message d'erreur fait référence à un fichier différent de celui que vous spécifiez dans votre code. – chepner

+0

Bah, j'ai oublié de modifier cela pour correspondre, j'ai raccourci le code un peu.Les noms de fichiers doivent être exactement les mêmes. – Rob

Répondre

1

En général, no such file or directory signifie que le fichier est introuvable. Parce que vous utilisez un chemin relatif, il se peut que vous soyez dans un répertoire différent?

Si vous tapez cat my_scripts/cid_reports/trb345432.csv à partir du même répertoire que celui du script, le fichier est-il présent?

Ou autrement. Si vous utilisez un chemin absolu (habituellement '/ home /' uid '/ my_scripts/cid_reports/trb345432.csv` mais que votre chemin peut être duifférent), le script trouve-t-il le fichier?

(ou si cela a été un commentaire à la place d'une réponse, eventhough il essaie de guider dans la recherche de l'erreur?)

+0

C'est la partie ennuyante, SI je mets dans le nom de fichier lui-même IE my_scripts/cid_reports/trb345432.csv son amende, Si je le référence comme une variable, il renvoie cette erreur. – Rob

+0

Donc, votre commande est en fait 'echo" report "| mutt - "$ USEREMAIL" -s "rapport" -a "$ nom_fichier" '? Essayez de mettre, à des fins de débogage, un 'echo $ un_nom_fichier; ls $ some_filename' avant votre appel à MUTT. –

+0

Mieux encore, utilisez 'declare -p un_nom_fichier'. – chepner

0

De vos commentaires à la réponse de Ljm Dullaart, vous stockez en fait le chemin du fichier dans une variable, puis l'utiliser quelque chose comme ceci:

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

Si c'est ce que vous faites, le problème est que ~ est entre guillemets doubles, et donc ne sont pas remplacées au chemin de votre maison annuaire. Ainsi, il cherche un sous-répertoire appelé littéralement "~" sous le répertoire de travail courant, et ne le trouve pas. Pour ~ être étendu au chemin de votre répertoire, laissez et les éléments suivants / unquoted, comme ceci:

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

Notez que j'ai également changé les noms de variables en minuscules. C'est une bonne pratique pour éviter les conflits avec les différentes variables d'environnement qui ont des significations spéciales; les spéciales sont toutes en majuscules, donc si vous utilisez des majuscules ou des minuscules, vous ne les trébucherez jamais accidentellement.