GNU tarを使用します。ファイルを圧縮/解凍するときに圧縮タイプを自動検出できます。しかし、アーカイブをstdinから解凍する必要があり、圧縮タイプが不明です。tarで正しい情報が得られることに気付きました。次のような提案:
tar: Archive is compressed. Use -z option
しかし、tarにその圧縮オプションを使用させたい自動的にその引数の入力を求めずに。どうやってやるの? tarはすでに圧縮タイプを知っているので、単に解凍してみませんか?
ありがとうございました!
最後に、tarがアーカイブをstdinから検出して解凍できない理由は、GNU tarを使用しているためです。BSDtarは問題なく自動的に実行できるため、代わりにbsdtarを使用することにしました。スクリプトのtarになりました。
これはあなたが聞きたい答えではありませんが、マニュアルによるとGNU tarではサポートされていません:
アーカイブの読み取り中に解凍オプションを指定する必要があるのは、ランダムアクセスをサポートしていないパイプまたはテープドライブから読み取る場合のみです。ただし、この場合、GNU tarは、使用するオプションを示します。例:
$ cat archive.tar.gz | tar tf - tar: Archive is compressed. Use -z option tar: Error is not recoverable: exiting now
このような診断が表示された場合は、提案されたオプションをGNU tar:
$ cat archive.tar.gz | tar tzf -