What you want to do is, make unzip take a ZIPped file on its standard input rather than as an argument. This is usually easily supported by gzip and tar kind of tools with a - argument. But the standard unzip does not do that (though, it does support extraction to a pipe). However, all is not lost...
Look at funzip manual page.
funzip without a file argument acts as a filter; that is, it assumes that a ZIP archive (or a gzip'd file) is being piped into standard
input, and it extracts the first member from the archive to stdout.
When stdin comes from a tty device, funzip assumes that this cannot be
a stream of (binary) compressed data and shows a short help text,
instead. If there is a file argument, then input is read from the
specified file instead of from stdin.
Given the limitation on single-member extraction, funzip is most useful
in conjunction with a secondary archiver program such as tar(1). The
following section includes an example illustrating this usage in the
case of disk backups to tape.
This goes well with the idea that most linux archives are usually TAR'ed and then ZIPped in some way (gzip, bzip, et al). This will work for you if you have a tar.ZIP.
It is worth noting that funzip is written by Info-ZIP original author Mark Adler. He writes in the funzip man page,
this functionality should be incorporated into unzip itself (future release).
however, no such update is seen around. I suspect that Mark found it unnecessary since other archiving methods worked easily with TAR.