Você pode usar sed
e substituição de processos :
read left right < <(tty0tty | head -n 1 | sed -e 's/[()<=>]//g' &)
Depois disso, $left
é /dev/pts/X
e right
é /dev/pts/Y
.
Isso engana um pouco - apenas substituímos os caracteres (
, )
, <
, =
e >
com nada e, em seguida, confiamos na divisão da palavra da shell depois disso.
Enviamos a tty0tty
output para head
, então pegamos somente a primeira (única) linha de saída e não bloqueamos para sempre. A partir daí, ele vai para o comando sed
que faz a substituição e, em seguida, usa o read
bultin do shell para ligar as variáveis left
e right
do shell às primeiras e segundas palavras da entrada que fornecemos. Recebemos essa entrada do <(...)
. <(...)
runs ...
em uma subshell e conecta sua saída a um pipe que podemos ler. Nós alimentamos esse pipe em read
com o primeiro <
, então ele obtém /dev/pts/X /dev/pts/Y
e o divide nas duas palavras que queríamos.
Depois disso, você pode executar someprogram $left
e microcom $right
conforme desejado.