私はUbuntuでこのコマンドを使用しておりcmp
、戻り値についてより明確に説明したいと思います。
マニュアル($ man cmp
)には戻り値の言及はありませんが、GNU文書を確認することをお勧めします。実際には次のように$ info cmp
言います。
終了状態が 0 の場合、相違が見つからなかったことを意味し、1 は一部の相違が見つかったことを意味し、2 は問題があることを意味します。
(見つけることができるここでオンライン、同じ文章)。
0と1の値を理解していますが、どのような状況でcmp
値2が返されますか?まだ明確ではありません。
cmp
コンテキスト:2つのファイルが同じであることを確認するためにコマンドを使用していますが、2が返された場合はどうすればよいかを知りたいです。
バージョン:
$ cmp --version
cmp (GNU diffutils) 3.7
答え1
GNUが比較を実行できないエラーが発生すると、GNUは終了ステータス2で終了します。cmp
たとえば、1 つまたは両方のファイルが見つからない、または読み取れない場合:
$ cmp asntohe asoneth
cmp: asntohe: No such file or directory
$ echo "$?"
2
POSIX標準仕様cmp
終了ステータスが「1より大きい」で「エラー」が発生した場合、ユーティリティを終了する必要があることを示します。
答え2
終了状態2は、cmp
比較を実行できないことを意味します。たとえば、1 つまたは両方のファイルを読み取ることができないためです。これは、ファイル名の1つがディレクトリを指す、ファイルが存在しない、またはそのファイルを読み取る権限がない場合などに発生する可能性があります。
これは完全ではなく、cmp
比較を実行するのに十分なメモリがない場合でも失敗する可能性があります。
答え3
cmp
-z
また、未定義のオプション(または--foo
)、または3つ以上のファイル名(または)などの無効なコマンドラインで指定した場合でも、ステータス2で終了します。いいえ ファイル名)。それにもかかわらず、問題を説明するエラーメッセージが表示されます。
答え4
cmp
sの終了状態は2であり、これは「回復できないエラー、放棄します」を意味します。cmp
「同じ」または「異なる」を除くすべての終了ステータスをカバーします。
「一つのことをうまくやる」というUnixの伝統に従って、2つのcmp
ファイルを比較します。一般的な診断ツールではありません。
Unixの初期には、cmp
より小さなバイナリを持つことが有利でした。 「機能クリープ」を避けると小型化に役立ちます。