$ echo 1 | (echo 2 && cat)
2
1
Tenho certeza de que existe uma solução melhor, mas isso deve ser feito.
Eu quero usar o sendmail para me mandar coisas e querer fazer isso em um oneliner.
echo "mail content" | sendmail emailataddres.com
Envia sem assunto.
A linha de assunto deve vir antes do conteúdo do Mail, então estou procurando por algo do tipo:
echo "mail content" | prepend "Subject: All that matters" | sendmail emailataddres.com
sed e awk tendem a ser muito difíceis de usar e lembrar.
EDIT : Só para esclarecer: echo "Mail content" é apenas um exemplo ilustrativo. Eu preciso ser capaz de prefixar o material em fluxos stdout de qualquer origem. por exemplo: ifconfig, zcat, etc.
$ echo 1 | (echo 2 && cat)
2
1
Tenho certeza de que existe uma solução melhor, mas isso deve ser feito.
Use o que o Claudius disse ou faça o seu próprio:
#!/bin/sh
echo -en "$@"
cat -
$ echo "Splendid SUPANINJA! Let's do it!" |\
prepend "Subject: Venetian Snares\n"
Subject: Venetian Snares
Splendid SUPANINJA! Lets do it!
Isso é inspirado pela resposta de Claudius.
Se você não quiser um intervalo entre as suas saídas, adicione o -n
param. Isso será parecido com:
$ echo 1 | (echo -n 2 && cat)
O que dará:
21
Das peças que eu juntei ... você poderia fazer algo assim:
echo "Subject: All that matters
'echo "mail content"'" | sendmail blah@blahblah
Observe que eu não fechei as aspas na primeira linha ... porque nem todas as shells traduzem o \n
em um caractere de nova linha ... mas ainda não encontrei uma que não processe uma nova linha real dentro das citações .
Quando um comando é colocado no caractere ', ele será executado e a saída será injetada no local. Tenha em mente que esse código é um pouco perigoso, já que é possível injetar comandos adicionais em linha que poderiam facilmente comprometer seu sistema ...
**** edit **** Seguindo o conselho de Claudius, uma opção mais limpa ficaria assim:
echo -e "Subject: All that matters \n $(echo "mail content") |sendmail blah@blahblah
Mesmo com esse modelo, ele pode ser explorado.
Tags command-line bash posix