Я пытаюсь создать команду, которая отправит мне текстовое сообщение, независимо от того, прошло оно или нет.

Пока что моя команда выглядит так:

command && echo OK || echo Failed | echo ' 'at `date | sendmail 5556667777@vtext.com

Поэтому, когда текст проходит, я хотел бы, чтобы он отправил мне текст (отправив мне электронное письмо), и текст должен выглядеть следующим образом:

Хорошо, 2 марта 14:37

и когда тест не пройден, он должен написать мне это:

Не удалось 2 марта 14:37.

Я не уверен, как правильно объединить echo выходы, и я надеюсь, что кто-то знает, где моя проблема. Оболочка это tcsh .

РЕДАКТИРОВАТЬ:

Для чего-то вроде 'ls' мне нужны каталоги, перечисленные в терминале, но я хочу, чтобы "Ok" или "fail" перешли к части "sendmail". Таким образом, все команды должны печататься на терминал как обычно, но отправлять часть "fail" или "ok" в часть sendmail.

1 ответ1

0

Комментарий ОП:

Для чего-то вроде ls я хочу каталоги, перечисленные в терминале, но я хочу, чтобы "Ok" или "fail" переходили к части sendmail .

Я не могу сделать это в tcsh . Это должно работать в bash:

your_command ; { [ $? -eq 0 ] && echo -n OK || echo -n Failed ; echo " at `date`" ; } | …

Я надеюсь, что кто-то возьмет это отсюда, перенесет вышеуказанную строку в tcsh и напишет лучший ответ.

Лучшее, что я могу придумать, - это скрипт bash , если только у вас есть bash на машине. Дело в том, что вы можете запустить такой скрипт из tcsh . Это быстрый и грязный скрипт:

#!/bin/bash
"$@"
{ [ $? -eq 0 ] && echo -n OK || echo -n Failed ; echo " at `date`" ; } | sendmail 5556667777@vtext.com

Измените Шебанг, если вам нужно. Сохраните этот фрагмент кода в файл (например, sendstatus.sh), сделайте его исполняемым с помощью chmod , а затем используйте его так:

./sendstatus.sh your_command
./sendstatus.sh your_command --with option -s
./sendstatus.sh ls
./sendstatus.sh ls -sl

Исправления:

  • echo -n заставляет следующий echo продолжать в той же строке;
  • последнее echo не читается из канала, потому что оно не имело смысла;
  • date находится внутри `меток (подстановка команд);
  • команды сгруппированы по разделителям {} поэтому их вывод передается в финал | в целом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .