2017-07-10 54 views
0

我已經打開了 我試圖改變功能在遠程實例的句柄在KDB遠程實例函數 下面是我的代碼我如何發送具有串

h "loadHDB:{value "\\l /mnt/data/ord_us"}" 

但它沒有工作 任何輸入將不勝感激。 我嘗試添加\ \字符串太多,但沒有奏效

+0

我試過了,這也不起作用h「\ l/mnt/data/ord_us」。任何人都知道正確的方法? – Terry

回答

1

你需要逃出你的內部引號,如下:

q)h "loadHDB:{value \"\\l /mnt/data/ord_us\"}" 

我不知道是該加載會工作,但至少該字符串應該是正確的。

+0

它看起來語法正確,但運行後for \ l/mnt/data/ord_us出現錯誤 – Terry

2

另一種方法是使用set在遠程進程中重新定義loadHDB。並且使用system意味着您可以避免轉義反斜槓:

q)h ("set";`loadHDB; {value system "l /mnt/data/ord_us"}) 
0

我更喜歡使用-3! (.Q.s1)爲'雙串'。請記住-3!取決於控制檯的大小,所以這種方法可能並不總是合適的。對於這些遠程函數,這個想法是把代碼放在雙引號內部 - 其中的任何其他字符串必須是-3!'ed並加入。一個有用的'測試'是-1打印消息。結果應該看起來像你將在遠程控制檯上執行的內容。

E.g.

q)printmsg:{-1 x;show value x;} 
q)printmsg "2+2" 
2+2 
4 
q)printmsg "system ",-3!"echo ",string .z.h 
system "echo illysemacbook.local" 
"illysemacbook.local" 
q)-1 " "sv("John said";-3!"Hello Sir!";"Frank said";-3!"something!") 
John said "Hello Sir!" Frank said "something!" 

是不是有用?

相關問題