我试图制作一个实用程序来从标准输入中读取一个列表,然后给它一个命令。
我制作了这个脚本:(命名consume_list
)
#!/bin/bash
set -euo pipefail
eval "hack() { $@ ; }"
while read -r line
do
hack "$line"
done < <(cat /dev/stdin)
所以我可以包装命令并简化脚本的阅读和制作。
一个糟糕的例子是在 list 上使用 bash 替换(对我来说,它比 sed、cut、tr 等更容易),如:
cat log.txt | grep 'error' | consume_list 'echo ${1:20:10}'
这将
是否有适当的工具来实现这一目标?
从标准输入(或其他任何地方)在一系列行上运行命令的“正确”工具是
xargs
:但是,在您的示例中,使用起来确实要好得多
cut
: