Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell while read循环+在while循环中创建一个进程_Shell_Unix_Scripting_Ksh - Fatal编程技术网

Shell while read循环+在while循环中创建一个进程

Shell while read循环+在while循环中创建一个进程,shell,unix,scripting,ksh,Shell,Unix,Scripting,Ksh,以下测试脚本有问题。当我在脚本中添加sleep5&行时,whileread循环不会从文件中读取所有行,而是只打印第一行 但是当我从脚本中删除sleep5&时,脚本会打印文件中定义的所有行 为什么睡眠会导致这种情况 如何解决这个问题?我想创建一个新的进程,睡眠只是while循环中的一个例子 $ more test #!/bin/ksh while read -r line ; do echo $line ( sleep 5 )& RESULT=$! sleep 1 kill $

以下测试脚本有问题。当我在脚本中添加sleep5&行时,whileread循环不会从文件中读取所有行,而是只打印第一行

但是当我从脚本中删除sleep5&时,脚本会打印文件中定义的所有行

为什么睡眠会导致这种情况

如何解决这个问题?我想创建一个新的进程,睡眠只是while循环中的一个例子

$ 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

您提供的代码运行并打印文件中的每一行

既然你不是在等待

( sleep 5 ) &

子进程,它对进程执行没有影响。这就是您编写的代码吗?

您提供的代码运行并打印文件中的每一行

既然你不是在等待

( sleep 5 ) &

子进程,它对进程执行没有影响。这就是您编写的代码吗?

这似乎是ksh特定版本中的错误。我从ksh 93s+中得到了相同的效果,但从bash、ash、pdksh、zsh或ksh 93t+中没有得到同样的效果。

这似乎是ksh特定版本中的一个bug。我从ksh 93s+中获得了相同的效果,但不是从bash、ash、pdksh、zsh或ksh 93t+中获得的效果。

此KornShell ksh脚本适用于此版本:

echo$KSH_版本 @MIRBSD KSH R48 2013/08/16 soExample.ksh:


此KornShell ksh脚本适用于此版本:

echo$KSH_版本 @MIRBSD KSH R48 2013/08/16 soExample.ksh:


您使用的是哪个版本的ksh?我没有在ksh93t+上看到它,就像Gilles提到的那样,您使用的是哪个版本的ksh?我没有像Gilles提到的那样在ksh93t+上看到它
user@foo /tmp
$ ksh soExample.ksh
Starting: /tmp/soExample.ksh with Input Parameters: {1:  {2:  {3:
Entering createFileWithInputHere
Exiting createFileWithInputHere
Entering readLine
123 aaa
234 bbb
556 ccc
Exiting readLine
Exiting: /tmp/soExample.ksh