我想将输入参数传递到我的 .mp 脚本中。例如,不要运行:
mpost script.mp
我想要运行类似这样的操作:
mpost script.mp 1 1 2 diamand
其中“1 1 2 diamond”是 4 个输入参数,告诉脚本要做什么。
目前我有以下情况:
numeric showindices
showindices := 0;
%showindices := 1;
string drawingmode
drawingmode := "diamond";
%drawingmode := "square";
然后我运行“mpost script.mp”,取消注释 showindices=0,然后单独取消注释 showindices=1。同样,我运行它时取消注释 drawingmode=diamond,然后单独取消注释 drawingmode=square。
有 10 种绘图模式和各种类似于 showindices 的“开关”,所以我不想一直取消注释并重新注释不同的行。我也不想多次复制和粘贴整个脚本。也许你会说我可以在循环中运行所有这些组合,但是有没有办法只从命令行传递参数,例如,如果我想要“正方形”绘图模式和 showindices 的“1”?
答案1
您可以mpost
使用命令行调用
mpost '\numeric showindices;showindices:=1;string drawingmode;drawingmode:="diamond";input script'
需要初始反斜杠,以便mpost
不会将其解释numeric
为文件名。
如果参数超过两个,情况就会变得复杂,因此你可以编写一个 shell 脚本,例如
#!/usr/bin/env sh
mpost "\\ \
numeric showindices; showindices:=$2; \
string drawingmode; drawingmode:="$3"; \
input $1"
将其保存为文件runscript
并从命令行调用它,如
sh runscript script.mp 1 \"diamond\"
shell 将在 at 个单词后拆分输入sh runscript
,并将它们分配给变量1
、2
等等3
。请注意应如何使用引号,以便将“真实”引号传递给脚本。
如果你使文件runscript
可执行,你也可以像这样调用它
./runscript script.mp 1 \"diamond\"
你可以保存runscript
在 shell 寻找可执行程序或脚本的地方,然后调用它
runscript script.mp 1 \"diamond\"