Estou confuso sobre o porquê de “| true ”em um makefile tem o mesmo efeito que“ || verdade"

13

Eu tenho um makefile onde estou parando um serviço antes de remover um arquivo. Quando não conseguia parar o serviço, isso quebraria o erro. Isso é claramente indesejado, então pensei em adicionar || true , mas perdi um | . Fazendo isso:

stop service foo | true
rm /etc/init/foo.conf

Estou confuso sobre por que isso está funcionando e o que está acontecendo. Isso significa que true é um aplicativo e não apenas uma palavra-chave? Eles são os mesmos? Existe uma boa razão para usar | true ?

    
por Kit Sunde 24.04.2011 / 21:59

1 resposta

16

true e false são coreutils (também normalmente internos do shell) que retornam 0 e não-0, para situações em que você precisa desse comportamento. Das man pages:

true - do nothing, successfully
false - do nothing, unsuccessfully

Então, você está direcionando a saída de stop service foo para true , que a ignora e retorna 0. Tecnicamente funciona, mas você provavelmente deve usar || true , então é óbvio qual foi sua intenção; não há realmente nenhuma razão para canalizar a saída para um programa que não a está usando

    
por 24.04.2011 / 22:07

Tags