我有一个外部设备需要启动,然后等待它正常启动。我想要执行此操作的方法是通过串行端口(通过 Plink,它是 PuTTY 的命令行工具)连接到它并读取它打印的所有文本行并尝试找到表明它已启动的文本字符串适当地。找到该文本字符串后,脚本将继续执行。
问题是我需要实时阅读这些文本行。到目前为止,我只看到了调用命令并在命令完成后处理其输出的方法。或者,我可以通过将 & 附加到命令并将输出重定向到文件来让 Plink 在后台运行。但问题是这个文件从一开始就是空的,所以脚本将直接继续。有没有办法等待某个文件的新行并在它出现时读取它?或者有没有人有任何其他想法如何做到这一点?
这是迄今为止我找到的最佳解决方案:
./plink "connection_name" > new_file &
sleep 10 # Because I know that it will take a little while before the correct text string pops up but I don't know the exact time it will take...
while read -r line
do
# If $line is the correct string, proceed
done < new_file
但是,我希望脚本在找到正确的文本字符串后直接继续。
所以,简而言之,有没有办法在命令完成执行之前连续访问命令的输出?