Linux下如何通过命令行捕获OpenSCAD模型的ECHO输出以生成BOM
在Linux下用OpenSCAD 2021.01命令行捕获echo生成的BOM
核心逻辑
OpenSCAD的命令行模式可通过指定输出文件(即使丢弃输出)规避GUI启动,同时echo语句的输出默认发送到标准错误流(stderr),只需重定向或过滤该流即可提取BOM内容。
基础命令(捕获原始echo输出)
直接运行模型并将echo输出保存到文件:
openscad --quiet -o /dev/null your_model.scad 2> bom.txt
参数说明:
--quiet: 关闭模型加载等无关日志,仅保留echo输出-o /dev/null: 指定输出文件为/dev/null(丢弃模型导出内容),强制OpenSCAD以命令行模式运行,不启动GUI2> bom.txt: 将标准错误流内容(即echo输出)写入bom.txt文件
过滤输出(去除echo前缀)
若需去掉echo:前缀,仅保留BOM实际内容,可结合grep和sed处理:
openscad --quiet -o /dev/null your_model.scad 2>&1 | grep "echo:" | sed 's/echo: //' > clean_bom.txt
2>&1: 将stderr重定向到stdout,方便管道处理grep "echo:": 仅保留含echo:的行,过滤无关错误信息sed 's/echo: //': 删除每行开头的echo:前缀
示例验证
假设模型文件assembly.scad包含以下echo语句:
echo("BOM: M4 x 16 Bolt - 4"); echo("BOM: Hex Nut M4 - 4"); echo("BOM: 20x20 Aluminum Profile - 2 pcs");
运行过滤命令后,clean_bom.txt内容为:
BOM: M4 x 16 Bolt - 4 BOM: Hex Nut M4 - 4 BOM: 20x20 Aluminum Profile - 2 pcs
注意事项
- 可通过
openscad --version验证2021.01版本是否正确安装 - 若
echo输出为数组等复杂结构,会保留JSON格式,可使用jq等工具进一步解析
内容的提问来源于stack exchange,提问作者Nikita Fedyashev
相关产品推荐
相关产品推荐

