Комментарий ОП:
Для чего-то вроде
ls
я хочу каталоги, перечисленные в терминале, но я хочу, чтобы "ОК" или "не удалось" перейти к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
находится внутри `меток (подстановка команд);- Команды сгруппированы по
{}
разделителям, поэтому их вывод передается в финал|
.