Você precisa dividir seu trabalho em dois comandos (como abaixo) para que history.txt
seja fechado antes de você começar a verificar seu tamanho.
O que está acontecendo é que a instrução if
examina o tamanho do arquivo depois que ele foi truncado, mas antes de ter sido gravado. Isso significa que o último componente do pipeline apenas sai e tudo antes disso morre com SIGPIPE
.
54 08 * * * /usr/local/bin/curator --dry-run --config /home/itadmin/.curator/curator.yml /home/itadmin/.curator/daily.yml 2>&1 | /usr/bin/tee -a /home/itadmin/.curator/logs.txt > /home/itadmin/.curator/history.txt; if [ $(wc -l </home/itadmin/.curator/history.txt) -ge 2 ]; then mail -s 'Snapshot Status' [email protected] < /home/itadmin/.curator/history.txt; fi
Não estou ciente de uma maneira de fazer isso sem usar o arquivo intermediário. Uma resposta para Enviando email da linha de comando se o corpo não estiver vazio sugere o uso do utilitário ifne
para o caso especial de entrada vazia / não vazia.