Следующий тестовый скрипт имеет проблему. Когда я добавляю строку (sleep 5 ) & в сценарий, тогда цикл "пока читается" не читает все строки из файла, а только печатает первую строку.
Но когда я удаляю ( sleep 5 ) & из скрипта, тогда скрипт печатает все строки, как определено в файле.
Почему ( sleep 5 ) & вызывает это?
И как решить проблему? Я хочу создать новый процесс (для которого sleep является лишь примером) в цикле 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 
На моем Linux, когда используется следующее содержимое file:
$ more file 
123 aaa 
234 bbb 
556 ccc
... работает ./test просто дает мне:
Read a line: 123 aaa Started background sleep with process id 4181 Slept for a second Killed background sleep with process id 4181 Completed
