Forma bash idiomática para executar ação opcional sem efeitos colaterais no código de saída

0

Este script sairá com o resultado do teste que não é desejado da perspectiva dos chamadores. Como isso deve ser implementado?

#!/bin/bash
test -n "" && echo "test passed"
    
por sevo 07.12.2015 / 12:17

1 resposta

3

Basta adicionar um explícito:

exit 0

no final do seu script, se você não quiser denunciar qualquer falha.

Você também pode fazer:

#! /bin/sh -
ret=0

cmd || ret=$? # we care about the failure of cmd

test -n "" && echo test # we don't care about the failure of test or echo

exit "$ret"

Para o seu exemplo específico, você pode reescrevê-lo:

test -z "" || echo test passed

(isso ainda reportaria um erro se echo falhasse, mas você pode querer denunciar esse erro, pois isso indicaria algo ruim)

Ou:

test -n "" && echo test passed || : ignore

O comando : sempre retorna com um status de saída sucesso .

    
por 07.12.2015 / 12:41