本番の問題を解決していますが、zipコマンドのエラーメッセージを再現できませんでした。
現在のソリューション
次のようにメッセージを処理するシェルラッパーに case-esac ブロックがあります。
case "$MSG" in
"This file is not changed; compression does not save space.")
echo "$MSG"
;;
*unchanged*)
echo "$MSG"
;;
*)
echo ERROR
;;
esac
問題のシナリオ
ラッパー(一部のファイルの場合)を介して圧縮コマンドを呼び出すと、エラーメッセージが生成されます(例:タイプ1);
-- file unchanged
ただし、(同じファイルセットに対して)コマンドラインから同じコマンドを実行すると、他のエラーメッセージが生成されます(例:タイプ2);
This file is not changed; compression does not save space.
誰でもこの動作を理解するのに役立ちますか?可能であればコピーすることをお勧めします。タイプ1エラーメッセージ
答え1
プログラムが圧縮しているファイルシステムのブロックサイズを表示して圧縮ファイルの数を認識すると、「保存されていないスペースがない」というメッセージが表示されることがあります。彫刻生成されたファイルでも同様です。 zipプログラムでも同様の動作を見ることができます。ファイル圧縮を拒否することで、開発者はパフォーマンスが向上すると信じています。
より一般的には、圧縮ユーティリティは結果ファイルが小さいかどうかをチェックします(圧縮アルゴリズムがオーバーヘッドになるテーブルを追加するため)。
例えば、IBM のマニュアル・ページには、圧縮に -f/-F オプションがあることが示されています (参照:協会)力圧縮。
最後に、「圧縮」は、ユーティリティがファイルをチェックし、サフィックスまたはファイルが圧縮されたことを示すコードで始まるという事実を発見したときに発生します。