Le script de test suivant a un problème. Quand j'ajoute la ligne (sleep 5 ) &
dans le script, la boucle "While read" ne lit pas toutes les lignes du fichier, mais affiche uniquement la première ligne.
Mais quand je retire le ( sleep 5 ) &
à partir du script, le script imprime toutes les lignes telles que définies dans le fichier.
Pourquoi le ( sleep 5 ) &
provoque cela?
Et comment résoudre le problème? Je veux créer un nouveau processus (pour lequel le sleep
est juste un exemple) dans la boucle while:
$ more test
#!/bin/ksh
while read -r line ; do
echo Read a line:
echo $line
( sleep 5 )&
RESULT=$!
echo Started background sleep with process id $RESULT
sleep 1
echo Slept for a second
kill $RESULT
echo Killed background sleep with process id $RESULT
done < file
echo Completed
Sous Linux, lors de l’utilisation du contenu suivant de file
:
$ more file
123 aaa
234 bbb
556 ccc
...fonctionnement ./test
me donne juste:
Read a line: 123 aaa Started background sleep with process id 4181 Slept for a second Killed background sleep with process id 4181 Completed
101010
bouton ou indenter chaque ligne de code quatre espaces, s'il vous plaît. En outre, vous devez marquer certaines réponses comme acceptées.