【发布时间】:2013-02-15 16:32:12
【问题描述】:
例如,如果我执行
ps aux | awk '{print $1}' | xargs -I {} echo {}
我想让 shell 在每个 echo 之间休眠 1 秒。
如何更改我的 shell 命令?
【问题讨论】:
例如,如果我执行
ps aux | awk '{print $1}' | xargs -I {} echo {}
我想让 shell 在每个 echo 之间休眠 1 秒。
如何更改我的 shell 命令?
【问题讨论】:
您可以使用以下语法:
ps aux | awk '{print $1}' | xargs -I % sh -c '{ echo %; sleep 1; }'
请注意空格和分号。在括号之间的每个命令之后,都需要分号(即使在最后一个之后)。
【讨论】:
psql -c "select foo from bar" | xargs -I % sh -c '{ echo %; sleep 1; }' | xargs -L1 -I {} curl -X POST -H "Content-Type: application/json" -d '{ "code": "123", "foo": "{}" }' "https://myapi.com/baz"
将echo 替换为一些名为sleepecho 的shell 脚本,其中包含
#!/bin/sh
sleep 1
echo $*
【讨论】:
如果您的awk 支持它:
ps aux | awk '{ system("sleep 1"); print $1 }' | xargs -I {} echo {}q
或完全跳过awk 和xargs
ps aux | while read -r user rest;
echo $user
sleep 1;
done
【讨论】: