Não testado, mas isso pode funcionar com um FIFO:
filename=/tmp/my.fifo
mkfifo $filename
node /var/.../app.js $torrent -r -q >$filename &
{ read first_line; read second_line; } <$filename
# do something with "$first_line" and "$second_line"
Eu tenho um comando em um script bash que eu quero capturar a saída e, em seguida, enviá-lo para o fundo. Como faço isso?
O seguinte não parece funcionar (ele continua bloqueando e não produz nada)
result='node /var/www/animekyun/node/node_modules/peerflix/app.js $torrent -r -q &'
Isso não parece funcionar. A saída é de 2 linhas que eu quero armazenar em uma variável como uma matriz. Dessa forma, posso usar a saída no restante do meu script.
Não testado, mas isso pode funcionar com um FIFO:
filename=/tmp/my.fifo
mkfifo $filename
node /var/.../app.js $torrent -r -q >$filename &
{ read first_line; read second_line; } <$filename
# do something with "$first_line" and "$second_line"
O que você quer (no meu entender) é impossível. Você não pode coletar a saída (com substituição de comando) e então executar o programa em segundo plano. pela simples razão de que a saída é coletada durante todo o tempo de vida de um processo. Um processo pode viver muito depois de ter parado de produzir, mas o shell não pode saber disso.
Você tem que redirecionar a saída para um arquivo e ter que verificar de alguma forma (isso é específico do aplicativo) quando a saída estiver completa (se você não quiser esperar que o processo termine).
node /var/www/animekyun/node/node_modules/peerflix/app.js $torrent -r -q >file &
[...]
result="$(<file)"