Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > gnu.bash.bug > #15753
| From | Bize Ma <binaryzebra@gmail.com> |
|---|---|
| Newsgroups | gnu.bash.bug |
| Subject | read -t 0 fails to detect input. |
| Date | 2019-12-18 19:40 -0400 |
| Message-ID | <mailman.1114.1576712471.1979.bug-bash@gnu.org> (permalink) |
| References | <CAFra36gNku2DTCyivz+caMGnTf7GvGJUTiWicUnBZatcckXGcQ@mail.gmail.com> |
It seems that read -t 0 should detect if there is input from a pipe (and
others).
>From man bash:
>> If timeout is 0, read returns immediately, without trying to read any
data.
>> The exit status is 0 if input is available on the specified file
descriptor, non-zero otherwise.
So, it seems that this should print 1:
$ true | read -t 0 var; echo $?
1
And this should print 0 (input available), but it doesn't (most of the
time).
$ echo value | read -t 0 var ; echo $?
1
A little delay seems to get it working:
$ echo value | { read -t 0 var; } ; echo $?
0
Related: Comment to what is wrong with read -t 0:
https://unix.stackexchange.com/questions/33049/how-to-check-if-a-pipe-is-empty-and-run-a-command-on-the-data-if-it-isnt/498065?noredirect=1#comment916652_497121
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -g -O2 -fdebug-prefix-map=/build/bash-2bxm7h/bash-5.0=.
-fstack-protector-strong -Wformat -We$
uname output: Linux iodeb 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2
(2019-11-11) x86_64 GNU/Linux
Machine Type: x86_64-pc-linux-gnu
Bash Version: 5.0
Patch Level: 3
Release Status: release
Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread
read -t 0 fails to detect input. Bize Ma <binaryzebra@gmail.com> - 2019-12-18 19:40 -0400
csiph-web