2015-02-27 18 views
9

Perché qualcuno dovrebbe voler avere un codice come echo "something" || true?A cosa serve "echo || true"?

Ho trovato un tale uso sulla linea 92 di /lib/lsb/init-functions su Ubuntu 14.04:

echo "$pid" || true

Capisco che || sta per OR. Ma non sono riuscito a trovare un modo per far sì che echo producesse una sorta di codice di uscita diverso da zero. E anche se lo fosse, a chi importa? Voglio dire, usare il prefisso || true assicura che il codice di uscita sia sempre 0. Quindi se il lato sinistro della doppia conduttura produce qualcosa di diverso da 0, true verrà eseguito e farà sì che l'intera linea produca 0.

Perché la paranoia con il codice di uscita di un eco semplice? C'è qualcosa che verifica se ogni singola riga su /lib/lsb/init-functions termina con successo?

+2

Personalmente, a proposito, tendo a scrivere questo come '||:'; leggermente più corto/terser/meno distratto visivamente. –

risposta

2

Perché la paranoia con il codice di uscita

Credo che sia per evitare lo script di uscire a causa di possibile utilizzo di:

set -e 

all'inizio dello script che avrebbe causato lo script per uscire altrimenti.

+0

Anche questo richiede 'echo' per restituire un errore che non sono sicuro che possa mai realmente fare, ma sì, questa (o sovra-applicazione di una regola) sembra come le due" ragioni "più probabili. –

+0

Vero Non riesco a pensare a un motivo quando 'echo' fallirà ma questo' || true' sembra essere una potenziale prevenzione dell'uscita. – anubhava

+5

'echo' può fallire se c'è un errore I/O sullo standard output, per esempio se è stato reindirizzato a un file in una directory inesistente, o a'/dev/full'. –