如何在bash脚本中调用rosbag info提取指定字段并完成数值判断
该需求完全可以在bash脚本中实现,核心思路是通过文本处理工具过滤rosbag info的输出,提取目标字段的数值即可。
字段提取方法
最稳定的实现方式是用awk做行匹配和字段提取,不需要依赖正则扩展,兼容性更好:
提取messages字段数值的命令如下:
rosbag info abag.bag | awk '/^messages:/ {print $2}'
逻辑说明:匹配所有以messages:开头的行,输出该行的第二个字段,就是我们需要的消息数量数值。
完整可运行脚本示例
#!/bin/bash # 配置bag包路径和预期消息数量 BAG_FILE="abag.bag" EXPECTED_MSG=952 # 提取实际消息数量 ACTUAL_MSG=$(rosbag info "${BAG_FILE}" | awk '/^messages:/ {print $2}') # 数值比较判断 if [ "${ACTUAL_MSG}" -eq "${EXPECTED_MSG}" ]; then echo "everything ok" else echo "some messages were skipped" fi
扩展说明
如果需要提取其他字段,只需要修改awk的匹配规则即可:
- 提取bag包大小:
awk '/^size:/ {print $2}' - 提取时长总秒数:
awk '/^duration:/ {gsub(/[()s]/,"",$3); print $3}'
内容的提问来源于stack exchange,提问作者KansaiRobot
相关产品推荐
相关产品推荐

