0

Я хочу получить результат функции «gap». Это интерактивный инструмент командной строки, в основном для математиков, которые работают над темами теории теории. В документации/faq говорится о , что это вообще невозможно. Тем не менее, запуск GAP в качестве дочернего процесса и связь с ним с использованием протоколов, псевдо-ttys, UNIX FIFO или какого-либо подобного устройства можно сделать.Как я могу вызвать функции GAP из сценария оболочки?

Пример сеанс с использованием пакета под названием CrystCat (кристаллографические группы каталог) выглядит следующим образом:

$ gap 
gap > LoadPackage("CrystCat"); 
gap > DisplaySpaceGroupType("P1"); 
#I  Space-group type (3,1,1,1,1); IT(1) = P1; orbit size 1; fp-free 
gap > quit; 
$ # exited 'gap' and back in my shell 

Как я не знаком с этими методами, кто-то может показать мне минимальный пример, имеющие следующие функциональные возможности:

$ ./script.sh "P1" 
#I  Space-group type (3,1,1,1,1); IT(1) = P1; orbit size 1; fp-free 
$ 

ОБНОВЛЕНИЕ: Принятый ответ question не работает.

ответ

1

Ответа на этот вопрос гэп-поддержки (с использованием стандартного ввода для чтения в возможности разрыва)

#!/bin/sh 

if [ "$#" != "1" ]; then 
    echo "Usage: test.sh <string>" 
    exit 1 
fi; 

gap -r -b -q << EOI 
LoadPackage("CrystCat"); 
DisplaySpaceGroupType("$1"); 
EOI 

Это работает точно так, как вы написали, а именно

$ ./script.sh P1 
#I  Space-group type (3,1,1,1,1); IT(1) = P1; orbit size 1; fp-free