You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本执行OMShell-terminal后无法自动输入后续命令如何解决

OMShell-terminal 自动执行Modelica命令的脚本修改方案

问题根因

原脚本无法生效是因为Bash逐行执行指令时,运行OMShell-terminal会阻塞当前进程,直到OMShell退出才会执行后续行的内容。且后续的loadModel等命令是OMShell的专属语法,Bash本身无法识别,也不会自动注入到OMShell的交互环境中。

解决方案

方案1:通过Here Document直接传递命令

使用Bash的Here Document语法,将需要执行的OMShell命令直接作为标准输入传递给进程,修改后的脚本如下:

#!/bin/bash
OMShell-terminal << EOF
loadModel(Modelica);
loadFile("Filename");
// 请替换为实际的起止时间参数,此处仅为示例
simulate(filename, startTime=0, stopTime=1);
EOF

注意所有OMShell命令末尾必须加英文分号,否则会触发语法错误。

方案2:独立mos脚本执行(更适合复杂场景)

如果执行逻辑复杂、需要复用,可以将Modelica操作单独封装为.mos后缀的OM脚本,再通过Bash调用执行:

  1. 新建run_model.mos脚本,写入OMShell命令:
loadModel(Modelica);
loadFile("Filename");
simulate(filename, startTime=0, stopTime=1);
  1. 修改Bash脚本内容:
#!/bin/bash
OMShell-terminal run_model.mos

该方式可读性和可维护性更高,也方便单独调试Modelica执行逻辑。


内容的提问来源于stack exchange,提问作者sridhatta aithal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 01:24:03