выполнение команды mailx в сценарии оболочки - PullRequest
4 голосов
/ 25 мая 2011

У меня есть простой сценарий оболочки, который выполняет сценарий .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 Ответ

7 голосов
/ 25 мая 2011

Вам нужно заключить в кавычки $SUBJECT, как вы его используете, то есть

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

Также в

SUBJECT="$VERSION script successful"
не должно быть пробела
...