2017-03-13 2 views
1

J'essaie d'utiliser la fonction Maple dans un programme externe à l'aide de l'interface de ligne de commande. Les données pour la fonction doivent être transmises à travers le fichier. Pour la démonstration du problème, j'ai créé deux fichiers: /home/user_name/test.mpl et /home/user_name/test_data.txt.Passez le nom du fichier sous forme de chaîne via la ligne de commande dans Maple

test.mpl ("cat" démontre l'utilisation de la fonction de 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." 

Selon le manual, je peux utiliser quelque chose comme ça (mais exemple ne couvre pas l'utilisation de deux fichiers, un en tant que code et un autre en tant qu'argument):

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

Lorsque je tente

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

Je reçois l'erreur suivante:

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

Si je supprime d'abord / dans la chaîne de nom de fichier, je reçois la sortie suivante (avant les erreurs liées à readline):

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

Il montre clairement que le chemin du fichier n'est pas analysé comme une chaîne (mais probablement comme une sorte d'expression). Je devrais probablement utiliser des séquences d'échappement, pour Maple ou pour shell, mais aucune de mes tentatives n'a fonctionné.

Si j'obtiens un nom de fichier à l'intérieur de test.mpl (décommenter la première ligne et supprimer le paramètre -c), cela fonctionne, mais ce n'est pas ce dont j'ai besoin. Comment faire passer le nom du fichier sous forme de chaîne via la ligne de commande (probablement sans utiliser -c)?

Répondre

1

Il travaille pour moi en utilisant Maple commandline sur Linux, comme dire,

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

Je pensais vraiment que je l'ai essayé. Merci! – anatsych