Bash

防止 xargs 因錯誤而退出

  • February 10, 2016

根據手冊頁,如果執行行之一以 255 錯誤退出,xargs 將退出:

如果命令的任何呼叫以狀態 255 退出,xargs 將立即停止而不讀取任何進一步的輸入。發生這種情況時,會在 stderr 上發出錯誤消息。

我怎樣才能讓 xargs這樣做?

我有一個 1500 行左右的批處理作業要執行,一次 50 行。我發現它總是死在某條線上,並且沒有完成工作。不好!

一個更好的問題,描述我正在嘗試做的問題,是:

如何執行一個 1500 行的批處理腳本,一次 50 行,這樣它就不會在中間退出作業,並且輸出被擷取到某種日誌文件中?

您可以用另一個簡單的 bash 腳本包裝 perl 腳本:

#!/bin/bash
real-command "$@" || exit 0

這將呼叫real-command,將您傳遞給此fake-command的所有參數傳遞給它,並且它將始終返回 0 退出程式碼(這意味著它始終成功)並且 xargs 永遠不會停止。

類似於larsksanswer 但更明確:

xargs sh -c "somecommand || true"

引用自:https://serverfault.com/questions/289094