The following test script has a problem. When I add the line
(sleep 5 ) & in the script then the "while read" loop does not read all lines from the file, but only prints the first line.
But when I remove the
( sleep 5 ) & from the script, then the script prints all lines as defined in the file.
( sleep 5 ) & causes this?
And how to solve the problem? I want to create a new process (for which the
sleep is just an example) in the while loop:
$ 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
On my Linux, when using the following contents of
$ more file 123 aaa 234 bbb 556 ccc
./test just gives me:
Read a line: 123 aaa Started background sleep with process id 4181 Slept for a second Killed background sleep with process id 4181 Completed