Сценарии оболочки требуют от вас мучительного внимания к пробелам.
Команда [
- это обычная команда (а также встроенная оболочка); обычно вы найдете исполняемый файл /bin/[
или /usr/bin/[
(а также /bin/test
или /usr/bin/test
. Следовательно, оболочка находит команду только тогда, когда она написана правильно. Также, когда пишется имя команды [
, последний аргумент должен быть ]
(только).
У вас есть:
if [-f "$DB_Success_log" ] ; then
Скорее всего, на вашей машине нет команды /bin/[-f
; вы должны получить сообщение об ошибке оболочки «команда [-f
не найдена». Вам нужно:
if [ -f "$DB_Success_log" ] ; then
Я почти автоматически удалил пробел перед точкой с запятой (оболочка все равно удаляет точку с запятой перед выполнением команды [
). Это не вредит, но не нужно.
У вас та же проблема с "$DB_failure_log"
- меня интересует непоследовательная заглавная буква в именах переменных, но это в основном ваша проблема.
Вы также, похоже, не указали правильную двойную кавычку для команды, начинающейся с echo " From :$from
; это должно появиться перед строкой > $mail_content
. Вам также необходимо проверить, отсутствует ли у вас первая sendmail
команда, и есть ли еще множество других предметов (fi
отсутствует, дважды?), О которых вам также следует позаботиться.