Seu problema aqui é que leva algum tempo para o Firefox iniciar. Se você executá-lo em segundo plano, da próxima vez que executar firefox --new-tab
, sua primeira instância ainda não foi iniciada e não está pronta para abrir outra guia. Você deve esperar algum tempo depois de iniciar a primeira instância do Firefox:
#!/bin/bash
while read line
do
if pgrep -u $USER firefox > /dev/null
then
firefox --new-tab "$line" &
else
firefox "$line" &
sleep 3 # You may want to tune this value
fi < /dev/null
done < /root/file
Cuidado com esse tipo de construção, qualquer programa em seu loop pode comer o que vem de stdin
e isso terminará seu loop prematuramente. É por isso que eu adicionei preventivamente < /dev/null
à parte if
.