我是一名有用的助手,可以为您翻译文本。
我有一个bash脚本,它从文件中读取行,然后对这些行进行一些逻辑处理。
因此,
在while循环体中,我正在将一个命令的输出传输到
为什么会发生这种情况?我不是bash专家,但似乎发生了某种缓冲区溢出。如果是这样,我该如何纠正呢?
谢谢, -D
编辑: 因此,需要澄清一下。$1是给定给bash脚本的第一个命令行参数,对应于文件名。我确切地做的是将输入文件的每一行作为另一个程序的参数。我正在将该程序的stdout和stderr管道传输到
因此,我正在进行更详细的示例:
谢谢, -D
我有一个bash脚本,它从文件中读取行,然后对这些行进行一些逻辑处理。
因此,
while read line;
do
# some stuff
done < "$1"
在while循环体中,我正在将一个命令的输出传输到
tee
。当这个输出非常大,大约100K时,下一次调用read line将失败,并且在读取文件中的所有行之前,while循环将终止。为什么会发生这种情况?我不是bash专家,但似乎发生了某种缓冲区溢出。如果是这样,我该如何纠正呢?
谢谢, -D
编辑: 因此,需要澄清一下。$1是给定给bash脚本的第一个命令行参数,对应于文件名。我确切地做的是将输入文件的每一行作为另一个程序的参数。我正在将该程序的stdout和stderr管道传输到
| tee -a somefile
我输入的程序是非标准的。根据我正在阅读的文件行,该程序的输出可能非常大。因此,我正在进行更详细的示例:
while read line;
do
setSomeVar1
setSomeVar2
program --output="$setSomeVar1" -options "$line" 2>&1 | tee -a "$setSomeVar2"
done < "$1"
谢谢, -D
read
命令处理。 - chepner| someCommand
算不算从stdin发送呢?感谢您的帮助。 - zdevex