【发布时间】:2014-11-13 15:42:15
【问题描述】:
我正在尝试在while 循环中逐行循环遍历 Perl 进程的输出。但是,我在语法上遇到了困难。
我试过这个,但得到一个“不明确的重定向”错误:
#!/bin/sh
while read line; do
echo "$line"
# do stuff with $line
done < $(perl process.pl)
./script.sh : line 6: $(perl process.pl): ambiguous redirect
例如,一种(低效)解决方案是:
#!/bin/sh
tmpFile=/tmp/tmpFile.txt
perl process.pl > $tmpFile
while read line; do
echo "$line"
# do stuff with $line
done < $tmpFile
我知道我可以将 Perl 进程通过管道传递到 while 循环:
perl process.pl | while ...
但是while循环是在子shell中执行的,我需要在while循环中设置一些变量在循环完成后保留,所以这不是一个选项。
我能做什么?
【问题讨论】:
标签: while-loop sh