Передать имя файла в виде строки через командную строку в Maple

Я пытаюсь использовать функцию Maple во внешней программе, используя интерфейс командной строки. Данные для функции должны передаваться через файл. Для демонстрации проблемы я создал два файла: /home/user_name/test.mpl и /home/user_name/test_data.txt.

test.mpl ("кошка" демонстрирует использование функции Maple):

#filename := "/home/user_name/test_data.txt":
print(filename):

i := parse(readline(filename)):
poly := parse(readline(filename)):
s := parse(readline(filename)):

print(cat(convert(poly+i,string), " ", s)):

test_data.txt:

1
x^2 * y + 1
"A string."

Согласно руководству, я могу использовать что-то вроде этого (но этот пример не охватывает использование двух файлов, один как код, а другой как аргумент):

/usr/local/maple/bin/maple -c 'datafile:="/tmp/12345.data";' -c N:=1;

Когда я пытаюсь

/path/to/maple -c 'filename:="/home/user_name/test_data.txt":' -q /home/user_name/test.mpl

Я получаю следующую ошибку:

Error, incorrect syntax in parse: `/` unexpected (near 11th character of parsed string)

Если я удалю первый / в строке имени файла, я получу следующий вывод (до ошибок, связанных с readline):

/        home       \
|-------------------| . txt
\user_name test_data/

Это ясно демонстрирует, что путь к файлу анализируется не как строка (а, вероятно, как какое-то выражение). Возможно, мне следует использовать некоторые escape-последовательности для Maple или для оболочки, но ни одна из моих попыток не сработала.

Если я получу имя файла внутри test.mpl (раскомментировав там первую строку и удалив параметр -c), это сработает, но это не то, что мне нужно.

Как передать имя файла в виде строки через командную строку (вероятно, не с использованием -c)?


person anatsych    schedule 13.03.2017    source источник


Ответы (1)


У меня это работает с использованием командной строки Maple в Linux, например,

/path/to/maple -c 'filename:=\"/home/user_name/test_data.txt\":' -q /home/user_name/test.mpl
person acer    schedule 13.03.2017