Я пытаюсь сделать простой скрипт, который, если «grep» приходит с результатами, отправляет электронное письмо с результатами. Но я хочу также отправить электронное письмо, если есть случай, когда нет отказов
#! /bin/bash
FILE=$(find . /opt/FIXLOGS/l51prdsrv* -iname "TRADX_*.log" -type f -exec grep -F 103=16 {} /dev/null \; )>> Rejects.txt
if [ "$FILE" == true ]
then
mailx -s "Logs $(date +%d-%m-%y)" "email" < Rejects.txt
rm -f Rejects.txt
elif [ "$FILE" == null ]
then
echo "No Rejects" >> Rejects.txt
mailx -s "Logs $(date +%d-%m-%y)" "email" < Rejects.txt
rm -f Rejects.txt
fi
Поставьте действительный shebang и вставьте свой скрипт на shellcheck.net для проверки/рекомендации.
Спасибо, просто закажите его, как указано на странице, спасибо за это. Все еще не работает, я считаю, что делаю что-то не так в заявлении
true и null на самом деле не имеют того значения, которое вы ожидаете от них в сценариях оболочки. Что именно вы хотите проверить с помощью if [ "$FILE" == true ]?
Это может быть то, что не так, я не уверен, что поставить в качестве условия, так как я хочу проверить, действительно ли grep находит тег 103 = 16, отправляет электронное письмо с результатами. И если он ничего не находит, отправьте электронное письмо с пометкой «Нет отклонений».





В bash все в значительной степени просто строка. null — это строка, а не нулевая ссылка, как в других языках. true также является строкой (если только это не команда true, но в вашем сравнении это не так).
Если вы хотите проверить, существует ли файл, используйте [[ -f "$FILE" ]]. Однако файл будет существовать в вашем случае, даже если grep ничего не соответствует, потому что bash автоматически создает файл, когда вы устанавливаете его в качестве места назначения для вашего вывода. Что вам действительно нужно, так это -s, который проверяет, существует ли файл и имеет ли он размер больше 0.
#!/bin/bash
find . /opt/FIXLOGS/l51prdsrv* -iname "TRADX_*.log" -type f -exec grep -F 103=16 {} /dev/null \; >> Rejects.txt
if [[ -s Rejects.txt ]] ; then
: # grep wrote stuff into the file
else
: # file is empty so grep found nothing
fi
Отформатируйте код, используя блоки кода.