我在 Ubuntu linux 上使用 openscad 命令从命令行生成模型。我终于成功地使用 -D 参数运行 openscad 命令来覆盖变量值:
$ openscad -o output.stl -D 'param1="name1"' -D 'param2="name2"' openscad-script.scad
编辑:注意我们必须传递 -D 参数的方式,根据Openscad 文档,单引号和双引号都必须存在。
但是,当我从 shell 脚本生成并执行相同的命令时,openscad 失败并出现错误:
$ ./myscript.sh value1 value2
错误:第XX行中的解析器错误:语法错误无法解析文件“openscad-script.scad”!
其中XX = 文件的最后一行。
这是bash脚本
#!/bin/bash
# run openscad command
param1="-D 'param1=\"$1\"'"
param2="-D 'param2=\"$2\"'"
echo "openscad -o $1-$2.stl $param1 $param2 openscad-script.scad"
openscad -o $1-$2.stl $param1 $param2 openscad-script.scad
这看起来很简单,我仍然无法弄清楚是什么让 openscad 在运行命令时失败。
谢谢你的帮助,
编辑:我找到了一种让它工作的方法,可能不是最好的
#!/bin/bash
# run openscad command
param1="-D 'param1=\"$1\"'"
param2="-D 'param2=\"$2\"'"
command = "openscad -o $1-$2.stl $param1 $param2 openscad-script.scad"
eval $command