wc -l
中的bg
在什么情况下不会返回?
特别是以下情况
我在shell脚本中有一个类似于下面的代码片段,
file_name=my_file_name.xyz
在一个循环中,
wc -l ${file_name}
& bg_pid = $!
在另一个循环中,
wait ${bg_pid}
我实际上有一个file_names数组,我在背景中为wc -l
添加pid
,在另一个循环中将wc -l
放在wc -l
上。
bg
完成。但是,count[i]=`wc -l ${file_name[i]}` & bg_pid=$!
其实我想做
{{1}}
这不起作用导致bg进程无法以这种方式返回值(并且我不想写入文件)
答案 0 :(得分:2)
要在帖子顶部回答您的问题,当wc的输入流不提供文件结尾时,后台中的“wc -l”将不会返回,因此如果您这样做,例如:
cat - | wc -l
然后不要输入任何内容。
答案 1 :(得分:1)
好的,所以你想知道为什么代码 wc -l
中的可能无法返回,对吧?请考虑以下命令:
wc -l ${file_name}
如果${file_name}
评估为空字符串,那么您正在运行:
wc -l
在stdin
结束之前读取stdin
。如果没有任何内容正在关闭wc
的{{1}},则stdin
将等待,等待....等待......