No bash, use apenas algo como alertcommand | grep $(date +"%m/%d")
$()
executa um comando em uma subshell e retorna a saída do comando como string. Alternativamente, você pode colocar o comando com backticks para o mesmo efeito.
Eu preciso usar o resultado de um comando de data formatada (date + "% m /% d") como o filtro grep para filtrar os resultados de outro comando que exibirá alertas em um sistema para que eu veja apenas alertas de o dia dado.
Digamos que alertcommand forneça a leitura de alerta no console.
Eu sei que posso fazer alertcommand | grep 8/10
para obter os logs a partir de hoje, mas eu quero ser capaz de alimentar date +"%m/%d"
para que eu não precise especificar a data toda vez que eu executar, mas não posso descobrir como vinculá-lo em um único comando (de preferência sem ter que criar arquivos temporários ou qualquer coisa, pois isso será executado no hardware do cliente).
Eu olhei para esta pergunta era semelhante , mas não conseguia descobrir como fazer funcionar da mesma maneira.
Você poderia simplesmente atribuir a saída do comando date a outra variável e usá-la como argumento:
myDateVariable='date +"%m/%d"'
alertcommand | grep $myDateVariable
Dessa forma, você pode reutilizar o valor de data no futuro e também depurar quaisquer etapas intermediárias
No shell csh do FreeBSD eu não posso usar os dois métodos.
1)
cat /var/log/exim/mainlog | grep $(date +%Y-%m-%d)
Illegal variable name.
2)
d='date +%Y-%m-%d';cat /var/log/exim/mainlog|grep $d
d=2011-11-13: Command not found.
Mas eu posso usar o código diretamente backticked assim:
cat /var/log/exim/mainlog | grep 'date +%Y-%m-%d'