我目前正在制作bash脚本。该脚本的目的并不重要。但是,我有一段代码正在生成错误。错误如下:
./script.bs: line 175: read: read error: 0: Key has expired
./script.bs: error reading input file: Key has expired
我在下面有175-189行的代码。
这段特定的代码执行以下操作: -读取txt文件,其中包含目标文件列表。 -对于每个目标文件,读取每一行。并且如果该行包含在$ NumbersFile中,它将什么都不做。如果该行未包含在$ NumbersFile中,它将将该行添加到NumbersFile中。
此通用代码段正常工作,并向$ NumbersFile添加了65810行内容。但是,它却收到了我上面提到的错误。
我想补充一点,第175行上的while循环(发生错误的地方)应该从给定文件中读取约70,000行。
如何解决此错误,以便脚本可以完成运行而没有密钥过期错误?
NumbersFile="numbers.txt";
while read line; do
while read gramline; do
has="0";
if grep -Fq -- "$gramline" "$NumbersFile"; then
has="1";
fi
if [ "$has" -eq "0" ]; then
echo "$gramline" >> $NumbersFile;
fi
done < "$line";
done < "targetsfile.txt";
答案 0 :(得分:1)
如果我的评论正确无误,也许这可能会更快:
complaints/detail/id
或已澄清:
{ cat targetsfile.txt; xargs cat < targetsfile.txt; } | sort -u > numbers.txt
注意:
xargs cat < targetsfile.txt | sort -u > numbers.txt
中。记录在手册中,3.2.4.3 Grouping Commands sort
输出“ targetsfile.txt”文件的内容 cat
构造将对目标文件中列出的每个文件执行xargs cat < targetsfile.txt
命令。这是一种非常简洁高效的执行方式
cat