【发布时间】:2011-03-05 23:50:21
【问题描述】:
以下测试脚本有问题。当我在脚本中添加(sleep 5 )& 行时,while read 循环不会从文件中读取所有行,而只会打印第一行。
但是当我从脚本中删除 ( sleep 5 )& 时,脚本会打印文件中定义的所有行。
为什么( sleep 5 )& 会导致这种情况?
以及如何解决这个问题?我想在while循环中创建一个新进程(sleep只是一个例子)。
$ more test
#!/bin/ksh
while read -r line ; do
echo $line
( sleep 5 )&
RESULT=$!
sleep 1
kill $RESULT
done < file
$ more file
123 aaa
234 bbb
556 ccc
【问题讨论】:
-
您使用的是哪个版本的 ksh?我没有像 Gilles 提到的那样在 ksh93t+ 上看到它