while read a; do echo "FIFO1: $a"; done < /tmp/fifo1 & exec 7> /tmp/fifo1
é de fato equivalente a
while read a; do echo "FIFO1: $a"; done < /tmp/fifo1 &
exec 7> /tmp/fifo1
&
age como um separador de comando, além de colocar o comando precedendo-o em segundo plano.
Estritamente falando, ele age como um separador para itens em uma lista de comandos :
A
list
is a sequence of one or more pipelines separated by one of the operators ‘;
’, ‘&
’, ‘&&
’, or ‘||
’, and optionally terminated by one of ‘;
’, ‘&
’, or anewline
.