Пакетно въвеждане и извеждане в Mathematica?

Наскоро намерих стара публикация на MathGroup, където е показано използването на недокументирани опции на командния ред -batchinput и -batchoutput:

 If test.mma contains the following commands:

    a=2+2
    b=10!;
    a+b

 then, running Mathematica in batch mode, only output for the first and 
 third commands goes to stdout:

    # math -batchinput -batchoutput < test.mma

    4

    3628804

Но когато се опитвам да възпроизведа това поведение под Windows, получавам само първия изход, отпечатан в прозореца на конзолата. какво правя грешно


person Alexey Popkov    schedule 01.07.2011    source източник
comment
Може би опцията -script (нова в 8) е полезна за вас. Това обаче не е същото, Out= реда няма да бъдат отпечатани.   -  person Szabolcs    schedule 01.07.2011
comment
@Szabolcs Моля, дайте пример за използване на тази опция (или връзка към нея). Етикетите Out= не се отпечатват с опцията -batchoutput. Каква е разликата между него и -script?   -  person Alexey Popkov    schedule 01.07.2011
comment
@Алексей, имаш ли версия 8? С -script не се отпечатва абсолютно нищо, освен ако вашата програма не направи някакъв явен изход (напр. използва Print). Моля, вижте под повече информация: reference.wolfram.com/mathematica/ref/program/ MathKernel.html Просто стартирайте math -script file.m, за да изпълните командите от file.m като скрипт.   -  person Szabolcs    schedule 01.07.2011
comment
@Szabolcs Все още нямам версия 8, но ми е интересно да разбера новата й функционалност. Така че Print в режим на скрипт ще отпечата в конзолата, въпреки че в режим на скрипт стандартният вход и изход не се пренасочват, както се казва на страницата с документацията?   -  person Alexey Popkov    schedule 01.07.2011
comment
@Aleksey, на практика изглежда, че единственото нещо, което се отпечатва, е това, което изрично отпечатваш от програмата си. Точно като всеки прост скриптов език. Сега можете да пишете малки програми в Mma и да ги изпълнявате неинтерактивно без преден край и без разсейващ изход. $Post и приятелите изглежда не се използват в режим на скрипт, така че не можете да го хакнете по прост начин, за да отпечатате целия изход, в случай че това е, което ви трябва. Мисля, че съм чел за безплатни предни части на трети страни, които постигат основно същото за по-ранните версии, но наистина не си спомням...   -  person Szabolcs    schedule 01.07.2011


Отговори (1)


Тествах го и получих и двете числа като изход. ОБАЧЕ, ако последната команда не е последвана от връщане на каретка, резултатът е точно това, което сте публикували!

Така че, моля, проверете дали завършвате последния си ред с връщане на каретката.

person Dr. belisarius    schedule 01.07.2011
comment
Благодаря ти! Проблемът беше, че последният ред не завършваше със знака за нов ред. - person Alexey Popkov; 01.07.2011
comment

Отидете на Инструменти > Настройки на програмата > ASCompletion

Под настройките „Помощници“ ще намерите „Винаги добавяне на интервал след“. По подразбиране ще съдържа if/for/while/do/catch/with. Премахнете ключовите думи, които не искате да бъдат автоматично форматирани, а останалото е доста очевидно.

- person Dr. belisarius; 01.07.2011
comment
Всъщност нов ред след последния ред не е достатъчен. Повечето редактори вмъкват този нов ред след последния ред, дори и да не го показват. Имате нужда от цял ​​допълнителен празен ред в края, за да работи това. - person Szabolcs; 01.07.2011
comment
@Szabolcs Не е на моята машина :) - person Dr. belisarius; 01.07.2011