在已经运行的会话上使用matlab命令(来自bash /命令行)

kDa*_*son 9 bash matlab

$ matlab -nodesktop -nojvm &
Run Code Online (Sandbox Code Playgroud)

我如何在刚刚创建的会话上执行matlab命令?

换句话说,我希望在后台运行matlab会话,并在任何给定时间从任意终端执行matlab命令和/或脚本,而无需创建新会话.

Tho*_*hor 8

我会建议像carandraug那样的类似解决方案,只是我更喜欢tmux作为多路复用器.获取正确传递的命令可能有点棘手,因此创建一个处理细节的shell脚本.

假设您已经开始matlab使用这样的终端:

tmux new -s matlab "matlab -nodesktop -nojvm"
Run Code Online (Sandbox Code Playgroud)

现在一个tmux名为matlab 的会话正在运行没有gui的matlab.

创建这个shell脚本:

MX

#!/bin/bash

if [[ $# -eq 0 ]]; then
  while read; do
    tmux send-keys -t matlab "$REPLY"$'\n'
  done
else
  tmux send-keys -t matlab "$@"$'\n'
fi
Run Code Online (Sandbox Code Playgroud)

在不同的终端中,您现在可以运行带引号的matlab命令:

mx "A = reshape(1:9, 3, 3)"
Run Code Online (Sandbox Code Playgroud)

甚至通过管道传递命令:

for mat in A B C; do echo "$mat = reshape(1:9, 3, 3)"; done | mx
Run Code Online (Sandbox Code Playgroud)