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.