Re: git-bisect: weird usage of read(1)
- From
- Reece Dunn <msclrhd@googlemail.com>
- Date
- Aug 11, 2008, 15:59 UTC
- Message-ID
- <3f4fd2640808110859r148550d2h833dae05b9e6544e@mail.gmail.com>
- In-Reply-To
- <38b2ab8a0808110718x2f63608ga3d2d77e317ce4eb@mail.gmail.com>
2008/8/11 Francis Moreau <francis.moro@gmail.com>:
Show 25 quoted lines
> Hello > > On Mon, Aug 11, 2008 at 4:15 PM, Johannes Schindelin > <Johannes.Schindelin@gmx.de> wrote: >> Hi, >> >> On Mon, 11 Aug 2008, Francis Moreau wrote: >> >>> I found this in git bisect: >>> >>> printf >&2 'Are you sure [Y/n]? ' >>> case "$(read yesno)" in [Nn]*) exit 1 ;; esac >>> >>> which looks very weird since read(1) returns a status and not the >>> string reads from std input. >>> > > sorry I should have said that there's a status but no output... > >>> Am I missing something ? >> >> Yes. "$()" does not return the status, but the output. >> > > But what's the output in that case ?
Using cygwin+bash, I get:
$ echo $(read yesno) n
$ echo $(read yesno; echo $yesno) n n $ $(read yesno) && echo yes || echo no n yes $ $(read yesno) && echo yes || echo no y yes $ case "$(read yesno)" in [Nn]*) echo "no" ;; esac n $ case "$(read yesno)" in [Nn]*) echo "no" ;; esac y $ case "$(read yesno; echo $yesno)" in [Nn]*) echo "no" ;; esac n no $ case "$(read yesno; echo $yesno)" in [Nn]*) echo "no" ;; esac y
So
>>> case "$(read yesno)" in [Nn]*) exit 1 ;; esac
does not work as expected. Replacing this with
case "$(read yesno; echo $yesno)" in [Nn]*) exit 1 ;; esac
would work as intended, as Mikael has pointed out.
- Reece