我正在写一个bash脚本。我需要从我的esp32上的websocket获取数据。我需要从传感器中得到价值。问题是,有时当我发送请求时,我无法正确地连接。
flow_value_raw=$(timeout 1s \
curl \
--no-buffer \
--header "Connection: Upgrade" \
--header "Upgrade: websocket" \
--header "Host: $ip$port/$flow" \
--header "Origin: http://$ip$port/$flow" \
--header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" \
--header "Sec-WebSocket-Version: 13" \
http://$ip:$port/$flow 2>/dev/null)
flow_value_raw=${flow_value_raw:2}以这种方式,我每秒钟都会触发卷发,但很多时候我从卷发中什么也得不到。有什么办法可以告诉curl从回复中得到一个值吗?如果我只使用没有超时的卷曲,就会得到多个响应。
发布于 2022-01-09 21:25:35
我不太清楚你的意思或追求。
所以我试着回应
我能告诉curl从响应中只得到一个值
条件为while-loop的true将无限期地继续。无限循环
来自curl的输出保存在flow_value_raw中
if [ -n "${flow_value_raw} ]检查字符串变量非空(如果是非空的,即由curl输出的值,break离开无限循环)是否为1第二和重复输出的break变量。
while true; do
local flow_value_raw=$(timeout 1 curl ...args)
if [ -n "${flow_value_raw}" ]; then
break
else
sleep 1
fi
done来自man timeout的PS
启动命令,如果持续时间后仍在运行,则终止它。
https://stackoverflow.com/questions/70645621
复制相似问题