所以我试图将一个串行命令发送到嵌入式设备并获得我们的测试自动化的响应,我尝试使用cat作为以下代码,并且卡在cat命令上,同样适用于dd,我也尝试在this link中发布的解决方案无济于事。我想发送命令,收到回复,并对回复非阻塞做一些事情。也许Bash有类似于C中的Select()?或者如果有人有更优雅的解决方案,我会非常感激:)
#!/bin/bash
#tty=/dev/tps21
stty -F /dev/tps21 speed 38400 cs8 cread clocal -cstopb -parenb >> /dev/null
echo 1
echo 'loglevel off' > /dev/tps21
echo 2
cat < /dev/tps21 >> /dev/null #Gets stuck here
echo 3
echo 'shell <username> <password> /opt/tools/eeprom/read.sh wifi_apn' > /dev/tps21
echo 4
echo 5
apn_raw="$(cat < /dev/tps21)" #Gets Stuck here
echo 6
apn="$(echo "$apn_raw" | sed -n 3p)"
echo 7
echo "${apn}"
echo 8
echo 'shell <username> <password> /opt/tools/eeprom/read.sh wifi_pass' > /dev/tps21
pass_raw="$(cat -v < /dev/tps21)" #Gets Stuck here
pass="$(echo "$pass_raw" | sed -n 3p)"
echo "${pass}"
nmcli --nocheck d $apn connect $apn password $pass iface wlan0
答案 0 :(得分:0)
我找到的最简单的解决方案是使用timeout XX cat
,这对我的应用程序来说非常有效