22

例如,如果我执行

ps aux | awk '{print $1}' | xargs -I {} echo {}

我想让外壳在每个echo.

如何更改我的 shell 命令?

4

3 回答 3

46

您可以使用以下语法:

ps aux | awk '{print $1}' | xargs -I % sh -c '{ echo %; sleep 1; }'

不过要小心空格和分号。在括号之间的每个命令之后,都需要分号(即使在最后一个命令之后)。

于 2013-03-01T08:18:11.750 回答
2

用一些名为 contains的echoshell 脚本替换sleepecho

 #!/bin/sh
 sleep 1
 echo $*
于 2013-03-01T08:18:43.800 回答
1

如果你awk支持它:

ps aux | awk '{ system("sleep 1"); print $1 }' | xargs -I {} echo {}q

awkxargs完全跳过

ps aux | while read -r user rest;
    echo $user
    sleep 1;
done
于 2013-03-01T14:23:36.287 回答