![当其他进程完成时杀死一个进程](https://linux22.com/image/143403/%E5%BD%93%E5%85%B6%E4%BB%96%E8%BF%9B%E7%A8%8B%E5%AE%8C%E6%88%90%E6%97%B6%E6%9D%80%E6%AD%BB%E4%B8%80%E4%B8%AA%E8%BF%9B%E7%A8%8B.png)
鉴于a | b
,我想b
在a
完成后杀死。是一个交互式过程,完成b
后不会终止(a
fzf
在我的例子中),整个过程在子 shella | b
中执行$()
。
到目前为止我想出的是
echo $({ sleep 5 & a=$!; { wait $a; kill $b; } } | { fzf & b=$!; })
sleep
代表a
和fzf
代表b
,示例中的结果被 所使用echo
,但在我的例子中,它是 的一个参数ssh
。看起来,这$b
不是 的 PID fzf
,它是空的。据我了解,情况不应该是这样,因为我使用了{}
, 而不是()
,所以它不是在子 shell 中执行。