【发布时间】:2021-01-22 14:12:34
【问题描述】:
我有一个 Shell 脚本,它启动一些后台进程(使用 &)并在用户调用 Ctrl+C 时自动终止(使用 trap)。这很好用:
#!/bin/sh
trap "exit" INT TERM ERR
trap "kill 0" EXIT
command1 &
command2 &
command3 &
wait
现在我想用grep -v "127.0.0.1" 过滤command3 的输出以排除所有带有127.0.0.1 的行。像这样:
#!/bin/sh
trap "exit" INT TERM ERR
trap "kill 0" EXIT
command1 &
command2 &
command3 | grep -v "127.0.0.1" &
wait
问题在于信号 Ctrl+C 不再杀死 command3。
有没有办法使用grep 捕获管道command3 以便能够在进程结束时终止?
谢谢
【问题讨论】:
-
试试 (command3 | grep -v "127.0.0.1") &
标签: shell pipe background-process