Grep不在脚本中工作,而是在控制台上工作

时间:2015-02-09 17:10:51

标签: linux terminal grep console

我的脚本有问题。我有一个连接到串行USB设备(ttyUSB1)的电压表。 智能电表需要一个初始序列,然后是第二个命令,以提供所有信息。这很好。例如,1.8.0 * 00(000898.46)就是我感兴趣的行。括号中的数字是我想要的kWh数。如果我打开第二个终端并做了一个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    

1 个答案:

答案 0 :(得分:0)

您可以尝试使用voltimeter的输出创建一个文件,并从该文件中创建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