如何在每个xargs命令之间休息1秒?

WDa*_*Dan 19 linux bash shell xargs

例如,如果我执行

ps aux | awk '{print $1}' | xargs -I {} echo {}
Run Code Online (Sandbox Code Playgroud)

我想让shell在每个之间睡1秒钟echo.

如何更改shell命令?

kam*_*uel 38

您可以使用以下语法:

ps aux | awk '{print $1}' | xargs -I % sh -c '{ echo %; sleep 1; }'
Run Code Online (Sandbox Code Playgroud)

但请注意空格和分号.在括号之间的每个命令之后,需要分号(即使在最后一个之后).

  • 一位同事向我指出,您可以将一个 xargs 调用通过管道传输到另一个 xargs 调用中,如果您有一个在单引号之间放置比较棘手的命令,这会很方便: `psql -c "select foo from bar" | xargs -I % sh -c '{ echo %; 睡觉1;}' | xargs -L1 -I {}curl -X POST -H "Content-Type: application/json" -d '{ "code": "123", "foo": "{}" }' "https://myapi .com/baz"` (2认同)