On Mon, 22 Sep 2025 09:27:17 -0400 Chet Ramey wrote:
> > If we add to each of them the `-d ""' option, then:
> > 
> > `read -d "" -t $nonzero' will slurp in all outstanding keys, regardless of
> > whether or not the RETURN key has been pressed.
> 
> OK, I'll bite. There's no portable way to determine `all' here, so you are
> left to poll/select with a zero timeout to see if there is input available,
> then do single-character reads until the select indicates there's no more
> pending input. You can do this from the shell level if you like.
> 
> while read -t 0; do
>         read -N 1 v
>         var+=v
> done

No, your snippet won't detect anything if keys have been typed in but the
RETURN key has no been pressed yet.

Which is why we add the -d "" option to each of the two possible scenarios:

RESULTS:

A) read -t 1 -d ""
This one slurps in everything that's there regardless of RETURN key.

B) read -t 0 -d ""
This one still leaves keys behind, those that have not been followed by RETURN.

It is B that bothers me.


  • CORRECTED: Bug i... pourko--- via Bug reports for the GNU Bourne Again SHell
    • Re: CORRECT... Chet Ramey
      • Re: COR... pourko--- via Bug reports for the GNU Bourne Again SHell
      • Re: COR... pourko--- via Bug reports for the GNU Bourne Again SHell
        • Re:... Chet Ramey
          • ... pourko--- via Bug reports for the GNU Bourne Again SHell
            • ... Chet Ramey
              • ... pourko--- via Bug reports for the GNU Bourne Again SHell
                • ... Chet Ramey
          • ... pourko--- via Bug reports for the GNU Bourne Again SHell
      • Re: COR... pourko--- via Bug reports for the GNU Bourne Again SHell
    • Re: CORRECT... pourko--- via Bug reports for the GNU Bourne Again SHell
    • Re: CORRECT... pourko2--- via Bug reports for the GNU Bourne Again SHell

Reply via email to