Shell

cmp 命令返回值?

  • April 2, 2022

cmp在 Ubuntu 上使用該命令,我想澄清一下它的返回值。

手冊 ( $ man cmp) 沒有說明返回值,但建議查看 GNU 文件。確實如此,$ info cmp說:

退出狀態 0 表示沒有發現差異,1 表示發現了一些差異,2 表示有問題。

(可以在這裡線上找到,同一句話)。

我了解 0 和 1 的值,但在什麼情況下會cmp返回值 2?這還不清楚。

上下文:我正在使用該命令檢查兩個文件是否相同,我想知道如果cmp返回 2 我應該做什麼。

版本:

$ cmp --version
cmp (GNU diffutils) 3.7

當存在阻止它進行比較的錯誤時, GNUcmp以退出狀態 2 終止,例如,如果一個或兩個文件無法找到或無法讀取:

$ cmp asntohe asoneth
cmp: asntohe: No such file or directory
$ echo "$?"
2

POSIX 標準規範規定cmp,該實用程序應在“錯誤”時以“大於 1”的退出狀態終止。

退出狀態 2 表示cmp無法執行比較,例如因為它無法讀取一個或兩個文件。如果其中一個文件名指向一個目錄,或者文件不存在,或者您沒有讀取它們的權限等,就會發生這種情況。

這並不詳盡。cmp如果沒有足夠的記憶體來執行比較,也可能會失敗。

引用自:https://unix.stackexchange.com/questions/697753