git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git-bisect: weird usage of read(1)

From
RDReece 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
Previous: Francis MoreauNext: Francis Moreau
Message 5 of 15 in “git-bisect: weird usage of read(1)”
  1. Francis MoreauAug 11, 2008
  2. Johannes SchindelinAug 11, 2008
  3. Mikael MagnussonAug 11, 2008
  4. Francis MoreauAug 11, 2008
  5. Reece DunnAug 11, 2008
  6. Francis MoreauAug 11, 2008
  7. Reece DunnAug 11, 2008
  8. Francis MoreauAug 11, 2008
  9. Petr BaudisAug 11, 2008
  10. René ScharfeAug 11, 2008
  11. Petr BaudisAug 11, 2008
  12. Junio C HamanoAug 11, 2008
  13. Francis MoreauAug 11, 2008
  14. René ScharfeAug 11, 2008
  15. Francis MoreauAug 11, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.