Find
find
返回值:find 手冊頁錯了嗎?
find
手冊頁說:
-execdir command {} +
總是返回 true,while-execdir command {} ;
僅當 command 返回 0 時才返回 true。和
EXIT STATUS 如果所有文件都成功處理,則查找狀態為 0 的退出,如果發生錯誤,則大於 0。
但是,如果我對此進行測試,則會得到相反的行為:
$ find . -execdir false '{}' \; ; echo $? 0 $ find . -execdir false '{}' \+ ; echo $? 1
有人可以解釋一下嗎?
-exec
而不是我得到-execdir
相同的結果。我試過find (GNU findutils) 4.6.0
了4.4.2
。
此“返回”不是 的退出程式碼,而是用於將多個操作連結在一起
find
的操作的返回值。如果你試試:-execdir``find
find . -execdir false '{}' \; -print
然後
find . -execdir true '{}' \; -print find . -execdir false '{}' + -print
列印每條路徑。
但是,當使用設置
+
的退出程式碼時find
*:*如果命令的任何呼叫退出非零,則它是非零的,而對於;
退出程式碼(直接)不受命令結果的影響。POSIX 需要這種行為-exec
,我想表明否則無法檢測到的故障:如果主表達式由 a 標出,則主表達式
<plus-sign>
應始終評估為真,並且評估主表達式的路徑名應聚合到集合中。$$ … $$ 如果任何呼叫返回非零值作為退出狀態,則查找實用程序應返回非零退出狀態。
-exec ... \;
未指定為影響退出程式碼,因此find
除非出現錯誤,否則退出零的預設行為適用。-exec ... \;
退出非零的命令不被視為錯誤,因此在沒有其他錯誤的情況下,退出程式碼將始終為零。