rsync: como copiar um arquivo que pode não existir sem um erro

3

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"
    
por Hooked 01.08.2012 / 16:16

2 respostas

4

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"
    
por 01.08.2012 / 16:28
0

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 .

    
por 01.08.2012 / 16:21

Tags