Shell
cmp 命令返回值?
我
cmp
在 Ubuntu 上使用該命令,我想澄清一下它的返回值。手冊 (
$ man cmp
) 沒有說明返回值,但建議查看 GNU 文件。確實如此,$ info cmp
說:退出狀態 0 表示沒有發現差異,1 表示發現了一些差異,2 表示有問題。
(可以在這裡線上找到,同一句話)。
我了解 0 和 1 的值,但在什麼情況下會
cmp
返回值 2?這還不清楚。上下文:我正在使用該命令檢查兩個文件是否相同,我想知道如果
cmp
返回 2 我應該做什麼。版本:
$ cmp --version cmp (GNU diffutils) 3.7
當存在阻止它進行比較的錯誤時, GNU
cmp
以退出狀態 2 終止,例如,如果一個或兩個文件無法找到或無法讀取:$ cmp asntohe asoneth cmp: asntohe: No such file or directory $ echo "$?" 2
POSIX 標準規範規定
cmp
,該實用程序應在“錯誤”時以“大於 1”的退出狀態終止。
退出狀態 2 表示
cmp
無法執行比較,例如因為它無法讀取一個或兩個文件。如果其中一個文件名指向一個目錄,或者文件不存在,或者您沒有讀取它們的權限等,就會發生這種情況。這並不詳盡。
cmp
如果沒有足夠的記憶體來執行比較,也可能會失敗。