Bash скрипт проверяет актуальную дату файлов на ftp - PullRequest
0 голосов
/ 04 июня 2018

У меня есть простой сценарий:

lftp user@server -e "cd dir && ls -ltr ;exit" > list.txt

if files=$(cat list.txt | grep "`date | awk '{print $2" "$3}'`") ; then
     echo "$files" | mailx -s "File exists"  name@name.com
else
    echo "$files" | mailx -s "File not exists" name@name.com
end if

проблема в том, что эта grep дата из файла не работает, иногда работает.

Может кто-нибудь сказать мне, что лучший способ проверитьFTP-сервер, если существует актуальный файл с датой и пришлите мне электронное письмо?

1 Ответ

0 голосов
/ 04 июня 2018

Я думаю, что здесь есть три возможных проблемы.Во-первых, date | awk '{print $2" "$3}' включает запятую в конце номера дня.Во-вторых, номер дня заполнен пробелами ls и date, но awk будет убирать заполнение.В-третьих, терминатор для if в bash равен fi, а не end if.

Попробуйте

if files=$(grep "`date '+%b %e'`" list.txt); then
     echo "$files" | mailx -s "File exists"  name@name.com
else
    echo "$files" | mailx -s "File not exists" name@name.com
fi

%e в date предполагает ls возвращает заполненный пробелом номер дня.Если ваша система использует номер дня, дополненный нулями, попробуйте %d.

...