Как мы можем вычислить ноутбук Mathematica из командной строки (т.е. при запуске ядра в режиме командной строки)?
Предположим, что мы работаем на удаленной машине. Я знаю, что можно преобразовать ноутбук в m файл и оценить его, но мне любопытно, можно ли это сделать непосредственно с помощью ноутбука.
Это то, что у меня есть до сих пор:
Во-первых, нам нужно запустить безголовый X-сервер на удаленной машине Linux, поэтому перед ним можно запустить интерфейс (и откройте ноутбук). Пропустите этот шаг, если вы работаете на локальной машине.
Xvfb :1 &
export DISPLAY=:1
После этого я запустил ядро Mathematica (math
) и сделал следующее.
Необходимо использовать UsingFrontEnd
, потому что для открытия ноутбука требуется передний конец. test.nb имеет единственную ячейку ввода, содержащую a=1
.
In[1]:= [email protected]["test.nb"]
Out[1]= -NotebookObject-
Попытавшись оценить ноутбук, видимо, я получаю dialog, и мне нужно использовать Return[]
для возврата. Я не уверен, почему строка ввода начинает отсчет с 1 снова (новое ядро запускалось передним концом?). Обратите внимание, что a
не получило значения.
In[2]:= [email protected][nb]
In[1]:= a
Out[1]= a
In[2]:= Return[]
Out[2]= a
После возвращения из диалога a
все еще не имеет значения.
In[3]:= a
Out[3]= a