【问题标题】:Keep terminal session between system() calls in MATLAB在 MATLAB 中的 system() 调用之间保持终端会话
【发布时间】:2017-10-01 08:37:51
【问题描述】:

每次调用 system 时,MATLAB 都会打开一个新会话。 我希望能够保持会话打开并对其执行多次调用。

理想情况下,这会起作用:

system('export DUMMY=2');
[~, out] = system('echo $DUMMY');
disp(out)

但这并不是因为每个system 调用都是独立的。我怎样才能解决这个问题并保持一个会话运行?

上面的代码可以通过使用setenv来修复,将第一行替换为setenv('DUMMY', '2');,但我正在寻找更通用的解决方案。

【问题讨论】:

标签: matlab shell


【解决方案1】:

这些方面的东西适合你吗?

C:\Users\...>SET "foo=bar" & ECHO %foo%
bar

Windows 批处理文件和命令提示符允许在一行中执行多个命令,并将它们与& 连接起来。 Matlab 示例:

[~, out] = system('SET "foo=bar" & ECHO %foo%');
disp(out); % bar

或者,您可以创建一个.bat 文件以通过system 函数调用,其行为取决于您传递给它的参数(阅读this post 了解更多信息)。

【讨论】:

  • 我的解决方案确实是从文件运行 bash 脚本(在 Unix 上,而不是 Windows 上),但这意味着脚本中的代码必须运行多次。对于export 命令,这不是问题。对于更多的任务命令,它可以是。
猜你喜欢
  • 2016-02-07
  • 1970-01-01
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多