ero un po 'disturbato per trovare il seguente comportamento:
bash$ false
bash$ true | echo $?
0
bash$ ksh
ksh$ false
ksh$ true | echo $?
0
ksh$ zsh
zsh$ false
zsh$ true | echo $?
1
Intuitivamente, sembra zsh ottiene di destra mentre bash e ksh sono sbagliate. $?
è "lo stato di uscita della pipeline eseguita più recentemente", che in ogni caso dovrebbe essere 1. Nota che false | echo $?
stampa anche 0 in entrambi ksh
e bash
. Lo standard è flessibile su questo punto (ad esempio, il comportamento non è specificato) oppure bash
e ksh
non conformi qui? Sono anche curioso di sapere cosa stanno facendo bash e ksh per sbagliare.
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin11)
Copyright (C) 2007 Free Software Foundation, Inc.
$ zsh --version
zsh 4.3.11 (i386-apple-darwin11.0)
$ ksh --version
version sh (AT&T Research) 1993-12-28 s+
Quando ho eseguito l'esempio 'bash', ho ottenuto' 1', non '0'. – lurker
Quale versione di bash? Produce lo stesso del tuo output zsh sul mio sistema. – Mat
Si prega di citare la versione di shell per favore per tutti. Con me 'zsh' ha effettivamente restituito' 0'. Impossibile verificare quindi. –