【发布时间】:2023-03-19 12:24:01
【问题描述】:
我有一个在 postgres 中运行查询的 bash 脚本,它输出到 csv。我想添加到该脚本以使用 mailx 将该 .csv 文件通过电子邮件发送到特定电子邮件。
我遇到的问题是它不会通过电子邮件发送文件。我可以收到电子邮件,所以我知道 mailx 设置正确。我只是无法将其作为附件通过电子邮件发送。它还可以通过电子邮件发送电子邮件正文中的输出。
这里是代码。
#!/bin/bash
NOWDATE=`date +%m-%d-%Y`
PGPASSWORD=password psql -w -h host -p 5432 -d database -U user -o /tmp/folder/file-$NOWDATE.csv <<EOF
Query is here
# remove the first 2 lines of the report as they are headers
sed -i '2d' /tmp/folder/file-$NOWDATE.csv
uuencode /tmp/folder/file-$NOWDATE.csv | mailx -s "Accounts No Credit Card Report for '$NOWDATE'" mail@gmail.com
我已经尝试了 mailx 部分:
uuencode /tmp/folder/file-$NOWDATE.csv /tmp/folder/file-$NOWDATE.csv | mailx -s "Accounts No Credit Card Report for '$NOWDATE'" mail@gmail.com
和
uuencode /tmp/folder/file-$NOWDATE.csv file-$NOWDATE.csv | mailx -s "Accounts No Credit Card Report for '$NOWDATE'" mail@gmail.com
所以我遇到的问题是当我运行 .sh 文件时它会吐出这个错误。
uuencode: fopen-ing /tmp/folder/file-01-11-2011.csv: Unknown system error
【问题讨论】:
-
路径
/tmp/folder/file-$NOWDATE.csv是否正确?在您拥有文件的地方执行pwd并仔细检查。当/path/to/file不存在时会出现此错误。 -
另外,
sed -i '2d' filename删除第二行,not 前两行。要删除前两行,您需要执行sed -i '1,2d' filename -
杰帕尔。我同意评论是错误的我发现我只需要删除第二行......我首先删除了第一行和第二行。大声笑...好的,我会检查一下。
-
文件路径确实与密码一起存在,它确实显示了正确的路径。 bahhhhh ...虽然我只是放置了一个通用路径来隐藏它确实显示正确路径的路径.. 想知道是否是 $NOWDATE 将它扔掉,但是我确实尝试了它,即使使用正确的文件名而没有$NOWDATE 并且仍然得到错误。我可能错过了应该安装的东西吗?
-
如果命令在命令行中运行,那么它也应该在脚本中运行:-)。尝试在变量周围放置花括号。
uuencode /tmp/folder/file-${NOWDATE}.csv /tmp/folder/file-${NOWDATE}.csv | mailx -s "Accounts No Credit Card Report for '$NOWDATE'" mail@gmail.com
标签: bash shell csv attachment mailx