You could do something like:

```
if
 cmd | {
 first_byte=$(dd bs=1 count=1 2> /dev/null | od -An -vto1)
 [ -n "$first_byte" ] && printf "\\$(( $first_byte ))" && cat
 }
then
 echo non-empty
fi
```

If you can install extra software, then you can use `moreutils`' `ifne`:

```
if cmd | ifne -n false; then
 echo non-empty
fi
```


---

About your *dealbreakers*:

`output=$(cmd)` sets a *shell variable* and I don't know of any `sh` implementation that has a limit on the length of its variables. It only becomes an environment variable if you export it and execute a command, and then you may be hit the system's limit on the size of the `argv[]` + `envp[]` passed to `execve()`

That same limit would apply for `argv[]` in the `printf %s "$output"` in those `sh` implementations where `printf` is not builtin (such as ksh88 or some pdksh-derived shells).

`$(...)` strips trailing newlines and in most implementations either chokes on or removes NULs. `yash` would choke on outputs that cannot be decoded as text in the locale.