Você pode usar o operador OR ||
. Se o comando anterior falhar e retornar false, o comando no lado direito será executado. Exemplo:
false || echo "The previous command failed"
ou no seu caso
rsync $(bib_dir) bib 2>/dev/null || echo "HI"
Eu tenho um comando no meu Makefile que sincroniza minhas bibliografias de uma fonte externa. Se rsync
falhar porque o arquivo de destino não existe rsync
sai com erro 23. Posso ocultar o erro canalizando a saída para /dev/null
, mas isso ainda faz com que meu Makefile seja encerrado. Como posso obter o seguinte código Makefile para a saída de "Hi"
quando $(bib_dir)
não existe?
sync_bibliography:
rsync $(bib_dir) bib 2>/dev/null
echo "HI"
Coloque o comando rsync dentro de um script de shell e, em seguida, chame o script de shell dentro do Makefile. No final do script de shell, use algo que sempre retornará true, como sleep 0
.