Linux 读取输入文件时出错:密钥已过期

Linux 读取输入文件时出错:密钥已过期,linux,bash,Linux,Bash,我目前正在制作一个bash脚本。这个脚本的目的并不重要。但是,我有一段代码正在生成错误。错误如下: ./script.bs: line 175: read: read error: 0: Key has expired ./script.bs: error reading input file: Key has expired 我有下面第175-189行的代码 此特定代码执行以下操作: -读取包含目标文件列表的txt文件。 -对于每个目标文件,将读取每一行。如果该行包含在$NumbersFil

我目前正在制作一个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循环应该从给定文件中读取大约70000行

如何修复此错误,使脚本可以在没有密钥过期错误的情况下完成运行

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";
NumbersFile=“numbers.txt”;
读行时;做
边读格拉姆林;做
has=“0”;
如果grep-Fq--“$gramline”“$NumbersFile”;然后
has=“1”;
fi
如果[“$has”-等式“0”];然后
echo“$gramline”>>$NumbersFile;
fi
完成<“$line”;
完成<“targetsfile.txt”;

如果我的评论是准确的,这可能会更快:

{ cat targetsfile.txt; xargs cat < targetsfile.txt; } | sort -u > numbers.txt

刚刚修好。谢谢。
密钥已过期
不是Bash错误,脚本中似乎没有调用可能产生此错误消息的外部工具。我模模糊糊地猜测你的文件在一个远程服务器上,它使用某种身份验证,过了一段时间就会超时…?我不明白这段代码的目的。number.txt是一个文件,其内容为文件名,每行一个。对于这些文件,您需要检查其内容是否也显示在numbers.txt中。因此,您有一个包含文件名的文件,每个文件也包含文件名。是这样吗?所以每个文件的每一行都必须是一个存在的文件,并且它们都必须是数字。txt如果我正确地解开了这个问题,也许你正在寻找
xargs cat numbers.txt
。你解释过了,我简直不敢相信。您正在执行大量IO,这会减慢进程:数千次调用grep,数千次附加到文件。我也在考虑类似的事情,但排序可能不受欢迎。这很有趣。我以后也会试试这个。感谢您的宝贵意见。@glennjackman,因为我是bash的新手。我不确定你的代码在配管之前到底做了什么。如中所示,为什么语法中有大括号,为什么要使用cat命令两次?当我试图在终端上运行它时,它不会执行,它只会将我置于一个换行符。我打赌它会执行,但所有的输出都会重定向到数字文件。验证它是否包含预期的内容。更新。现在正在执行。我一定输入了不正确的东西。原谅我,因为我仍在学习bash,我将在未来的几年中继续学习。我稍后会通知你结果的正确性。
xargs cat < targetsfile.txt | sort -u > numbers.txt
while IFS= read -r line; do cat "$line"; done < targetsfile.txt