mailx отправка электронной почты на несколько учетных записей

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

Message=<HTML><BODY><p>FINISHED</p></BODY></HTML>

[email protected];[email protected]
Recipients=$(echo "${Recipients}" | sed "s/;/ /g")
echo "Recipients:  ${Recipients}"

mailx -s "Ingestion Report ${EXT1}. $( echo "\nContent-Type: text/html")" "${Recipients}" < $MESSAGE

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

Однако ответ таков:

sh: [email protected]:  not found

Что я делаю не так? Благодарю.


person arcee123    schedule 13.11.2019    source источник
comment
Есть много синтаксических ошибок из-за неправильного цитирования. Вы отвлекаете внимание от собственно вопроса.   -  person tripleee    schedule 13.11.2019


Ответы (1)


Точка с запятой — это разделитель команд, поэтому вам нужно изменить способ определения Recipients из:

[email protected];[email protected]

To:

Recipients="[email protected];[email protected]"

Заключение значения в кавычки предотвращает интерпретацию ; как разделителя команд.

В качестве альтернативы вы можете просто правильно определить Recipients в первую очередь:

Recipients="[email protected] [email protected]"

Или, если вы не контролируете это по какой-либо причине, вы можете отказаться от вызова sed и просто сделать:

mailx ... ${Recipients/;/ }
person Sean Bright    schedule 13.11.2019
comment
Но зачем вообще ставить точку с запятой на первое место, если все в вашем коде требует разделителя пробелов? - person tripleee; 13.11.2019
comment
потому что я извлекаю список адресов электронной почты из базы данных и ввожу его в код через параметр. С местами там плохо. Но что я сделал, так это заменил точку с запятой на запятую, и все встало на свои места. Спасибо большое! - person arcee123; 13.11.2019