Depois
% xkbset -repeatkeys
% xinput test 14 | grep -m 1 "key release 36"
e segurando o segundo retorno, nada acontece, como esperado. Depois de liberar o segundo retorno, recebo
key release 36
Agora, eu esperaria que o programa saísse imediatamente, mas, em vez disso, ele aguarda uma tecla adicional --- até o shift funciona ---, antes de sair. Suponho que isso faça com que o xinput produza uma linha adicional, mas não vejo por que isso deveria ser necessário --- o grep já encontrou a linha que estava procurando. Então, por que não sai imediatamente?
PS. A resposta parece correta e consegui obter o resultado desejado fazendo
% xinput test 14 | { grep -m 1 "key release 36" && killall xinput ; }
grep
provavelmente sai após a primeira partida. Éxinput
que ainda está em execução: ele só percebe que o pipe está fechado na próxima vez que tentar enviar algo.Por exemplo, aqui apenas o primeiro pgrep encontra um
grep
processo em execução, mas o sono do lado esquerdo ainda acontece.