Выполнение команды mailx в сценарии оболочки

У меня есть простой сценарий оболочки, который выполняет сценарий.sql. Когда сценарий.sql завершен, сценарий оболочки отправляет электронное письмо на указанный адрес с уведомлением о том, успешно ли выполнен сценарий.sql.

Моя проблема в том, что строка темы усекается. Я использую простое утверждение IF, чтобы определить строку темы:

grep 'ORA-' $OUTFILE > /dev/null 2>&1
if [ $? = 1 ]; then
    ERRORS=n
    SUBJECT= "$VERSION script successful"
else
    ERRORS=y
    SUBJECT="$VERSION script had error(s)"
fi

Это отлично работает. Однако когда я выполняю команду mailx, строка темы усекается до "Разработка" или "Производство" в зависимости от версии сценария, который был выполнен:

mailx -s $SUBJECT $EMAIL < $MAILFILE

Я знаю, что строка темы должна быть в двойных кавычках, если она включает в себя встроенные пробелы, но, похоже, это не работает правильно при назначении переменной.

Это можно обойти? Есть ли способ избежать двойных кавычек

1 ответ

Вам нужно процитировать $SUBJECT как вы используете это, т.е.

mailx -s "$SUBJECT" $EMAIL < $MAILFILE

Также не должно быть места в

SUBJECT="$VERSION script successful"
Другие вопросы по тегам