Linux
為什麼“文件 xxx.src”導致“無法打開 `xxx.src’(沒有這樣的文件或目錄)”但退出狀態為 0(成功)?
為什麼
file xxx.src
導致cannot open
xxx.src’ (No such file or directory)`但退出狀態為0(成功)?$ file xxx.src ; echo $? xxx.src: cannot open `xxx.src' (No such file or directory) 0
注意:比較
ls
:$ ls xxx.src ; echo $? ls: cannot access 'xxx.src': No such file or directory 2
此行為記錄在 Linux 上,並且是 POSIX 標準所要求的。從
file
Ubuntu 系統的手冊中:EXIT STATUS file will exit with 0 if the operation was successful or >0 if an error was encoun‐ tered. The following errors cause diagnostic messages, but don't affect the pro‐ gram exit code (as POSIX requires), unless -E is specified: • A file cannot be found • There is no permission to read a file • The file type cannot be determined
使用
-E
(如上所述):$ file -E saonteuh; echo $? saonteuh: ERROR: cannot stat `saonteuh' (No such file or directory) 1
Linux 上的非標準
-E
選項記錄為在文件系統錯誤(未找到文件等)上,不要像 POSIX 要求的那樣將錯誤作為正常輸出處理並繼續執行,而是發出錯誤消息並退出。
該
file
實用程序的 POSIX 規範說(我的重點):如果操作數命名的文件
file
不存在,無法讀取,或者文件操作數命名的文件類型無法確定,則不應認為是影響退出狀態的錯誤。