2017-03-13 37 views
1

我試圖在使用命令行界面的外部程序中使用Maple函數。函數的數據將通過文件傳遞。爲了演示這個問題,我創建了兩個文件:/home/user_name/test.mpl和/home/user_name/test_data.txt。將文件名作爲字符串通過命令行傳遞到Maple

test.mpl( 「貓」 演示使用楓功能):

#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." 

按照manual,我可以使用這樣的事情(但是這示例不包括使用兩個文件,一個作爲代碼,另一個作爲參數):

/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/ 

它清楚地表明文件路徑不會被解析爲字符串(但可能是某種表達式)。可能我應該使用一些轉義序列,Maple或shell,但我的嘗試都沒有奏效。

如果我在test.mpl中取得文件名(取消第一行的註釋並刪除-c參數),它雖然有效,但這不是我所需要的。

如何通過命令行傳遞文件名作爲字符串(可能不使用-c)?

回答

1

它在Linux上使用命令行楓葉,如說對我的作品,

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

我真的以爲我試了一下。謝謝! – anatsych

相關問題