Чтобы использовать read
, чтобы прочитать часть ввода, чтобы проверить, пуст он или нет, у вас будет использовать оболочку типа zsh
, которая может хранить любое значение байта в своих переменных, например:
#! /bin/zsh -
if LC_ALL=C read -ru0 -k1 byte; then
# one byte was read, the input is not empty
(printf %s "$byte"; cat) | gzip
else
echo >&2 No input
fi
Или использовать некоторую форму кодирования:
#! /bin/sh -
# get the value of the first byte as octal:
byte=$(od -An -N1 -vto1 | tr -cd 0-7)
if [ -n "$byte" ]; then
(printf "\\$byte"; cat) | gzip
else
echo >&2 No input
fi