gpt4 book ai didi

linux - Grep 不在脚本中工作,但在控制台上工作

转载 作者:太空宇宙 更新时间:2023-11-04 03:45:18 26 4
gpt4 key购买 nike

我的脚本有问题。我有一个连接到串行 USB 设备 (ttyUSB1) 的电压表。智能电表需要一个初始序列,然后紧接着第二个命令来提供所有信息。效果很好。例如 1.8.0*00(000898.46) 这是我感兴趣的行。括号中的数字是我想要的千瓦时数字。如果我打开第二个终端并执行 cat/dev/ttyUSB1 ,它工作正常,我可以看到传入的信息。4 到 5 秒后,我想要的行出现。但脚本不起作用。如果我在一个终端中启动一个脚本,它会一直等待。 Grep 尚未完成。如果我在第二个终端中启动它,那么第一个终端就会完成。或者只是另一个终端中的 grep 1.8.0/dev/ttyUSB1 -m1 有效,但在脚本中无效。我尝试了不同的阅读方法,但没有任何效果。老实说,我不太了解脚本编写,并且总是以某种方式成功,但这里没有任何帮助:(

请帮忙。谢谢你!阿恩

这里是脚本:

#! /bin/bash
echo start
echo $'\x2f\x3f\x21\x0d' > /dev/ttyUSB1
sleep 1
echo ask
echo $'\x06\x30\x30\x30\x0d' > /dev/ttyUSB1
echo wait
grep 1.8.0 /dev/ttyUSB1 -m1
echo end

最佳答案

您可以尝试使用电压表的输出创建一个文件,并从该文件中执行 grep 操作:

#! /bin/bash

dev=/dev/ttyUSB1
file=/tmp/testfile

(tail -f $dev | tee $file) & # let's continuously copy in background
echo start
echo $'\x2f\x3f\x21\x0d' > $dev
sleep 1
echo ask
echo $'\x06\x30\x30\x30\x0d' > $dev
echo wait
grep 1.8.0 $file # lets get the info from the file instead
echo end
sleep 1
exit

关于linux - Grep 不在脚本中工作,但在控制台上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28415332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com