NOWDATE=`date +%m-%d-%Y`
Вам решать, но рассмотрите возможность использования формата ISO-8601, ГГГГ-ММ-ДД (%Y-%m-%d
). Среди других преимуществ, это хорошо сортируется.
# remove the first 2 lines of the report as they are headers
sed -i '2d' /tmp/folder/file-$NOWDATE.csv
Это не удаляет первые две строки, оно просто удаляет вторую строку. Измените '2d'
на '1,2d'
(но см. Ниже).
Обратите внимание, что это изменяет файл на месте.
uuencode /tmp/folder/file-$NOWDATE.csv | mailx [...]
Если uuencode
дается только одно имя файла, он считывает из стандартного ввода и помещает имя в свой вывод. Ваш следующий текст «Я пробовал часть mailx с:» ... указывает, что вы, вероятно, знаете об этом - но вы не показали нам код, который устраняет эту проблему, кроме как во фрагментах.
Сообщение об ошибке, которое вы получаете:
uuencode: fopen-ing /tmp/folder/file-01-11-2011.csv: Unknown system error
не то, что вы обычно получаете, если файл не существует. Я не знаю, что вызвало бы «Неизвестную системную ошибку», подобную этой.
Но вот альтернатива, которая (а) немного чище ИМХО, и (б) не требует uuencode
, чтобы попытаться прочитать файл:
#!/bin/bash
NOWDATE=`date +%m-%d-%Y` # but %Y-%d-%m is better
DIR=/tmp/folder
FILE=file-$NOWDATE.csv
RECIPIENT=user@example.com
PGPASSWORD=password psql -w -h host -p 5432 -d database -U user -o $DIR/$FILE <<EOF
... Query is here
EOF
tail -n +3 $DIR/$FILE | uuencode $FILE | \
mailx -s "Accounts No Credit Card Report for '$NOWDATE'" $RECIPIENT