Je travaille avec le bloc suivant de bash et il n’imprime pas la première ligne de sortie attendue:
exec 3< <(python3 -m http.server)
while true; do
read -t 2 line
echo "reading..."
echo "$line"
done <&3
Une fois python3 -m http.server
démarré, une ligne est imprimée Serving HTTP on 0.0.0.0 port 8000
, mais le code ci-dessus n’imprime pas cette ligne. Ensuite, python imprimera des éléments tels que les demandes GET au fur et à mesure de leur apparition et de leur impression. Pourquoi bash manque-t-il cette première ligne?
Mon but est de mettre cela dans un script et de remplacer les echo
appels par un test du processus redirigé indiquant qu'il a fini de démarrer, puis de casser la boucle et de terminer le script (bloquez donc l'exécution du script jusqu'à ce que le démarrage soit terminé) , avec le processus redirigé se poursuivant en arrière-plan. http.server
est juste mon cas de test.
la source