У меня есть крошечный скрипт, который должен читать со стандартного ввода, пока он открыт, но я получаю другое поведение, когда запускаю его на bash 4.4 в Ubuntu (из образа Docker) и на bash 4.4 macOS (устанавливается вместе с brew))
Сценарий:
$ cat test.sh
#!/bin/bash
while test -s /dev/stdin; do read A; echo "-- $A --"; done
В macOS:
$ (echo one; echo two) | ./test.sh
-- one --
-- two --
В Ubuntu:
$ (echo one; echo two) | ./test.sh
# empty output
Есть ли другой способ проверить, что stdin открыт и непуст?Я тоже играл с read
, но он тоже не казался портативным.