Я пытаюсь использовать функцию 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
)?