Vas*_*kov 3 linux bash command-line xargs gnu-parallel
如何stdin立即为每一行执行命令?
示例:
(echo abc; sleep 10; echo def;) | ???
Run Code Online (Sandbox Code Playgroud)
该xargs工具不会完成这项工作,因为它会阻塞直到看到所有数据(等待 stdout 关闭)。然而,当新行可用时,我必须立即执行命令。
使用@Hennes 建议的 shell 脚本:
long_running_command | (
while read -r LINE; do
echo "line is: $LINE";
command_to_execute "$LINE";
done;
)
Run Code Online (Sandbox Code Playgroud)
与 相比parallel,这没有 ~ 150 毫秒 + 每行 3..7 毫秒的开销。它还适用于执行多行 bash 命令、重用函数或变量。