鉴于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 中执行。