Comentário do OP:
For something like
ls
I want the directories listed in the terminal, but I want the "Ok" or "fail" to go to thesendmail
part.
Eu não posso fazer isso em tcsh
. Isso deve funcionar em bash
:
your_command ; { [ $? -eq 0 ] && echo -n OK || echo -n Failed ; echo " at 'date'" ; } | …
Espero que alguém o leve daqui, coloque a linha acima em tcsh
e escreva uma resposta melhor.
O melhor que posso pensar é um script bash
, se você tiver apenas bash
na máquina. O ponto é que você pode executar um script desse tipo a partir de tcsh
. Este é um script rápido e sujo:
#!/bin/bash
"$@"
{ [ $? -eq 0 ] && echo -n OK || echo -n Failed ; echo " at 'date'" ; } | sendmail [email protected]
Modifique o shebang se você precisar. Salve esse trecho de código em um arquivo (por exemplo, sendstatus.sh
), torne-o executável com chmod
e use-o da seguinte forma:
./sendstatus.sh your_command
./sendstatus.sh your_command --with option -s
./sendstatus.sh ls
./sendstatus.sh ls -sl
As correções:
-
echo -n
faz com que o próximoecho
continue na mesma linha; - o último
echo
não leu do canal porque não fazia sentido; -
date
está dentro de 'marks (substituição de comando);
Os comandos - são agrupados por delimitadores
{}
, portanto, sua saída é passada para o% final|
no total.