Kdb 使用变量将db path传递给\l或.Q.l

Kdb 使用变量将db path传递给\l或.Q.l,kdb,q-lang,Kdb,Q Lang,我正在编写一个q脚本,在特定路径中加载一个db,并对其进行一些处理。db的位置目前在脚本中是硬编码的,但我想将db路径作为参数传递,并从变量中的路径加载它 现在看起来是这样的: q) \l /path/to/dbDir #Works dbPath:`$.z.x 0 .Q.l dbPath 我发现.Q.l应该让我们使用一个变量来实现这一点,所以我尝试在脚本中使用以下内容: dbPath:`$.z.x 0 .Q.l hsym dbPath #Fails 当使

我正在编写一个q脚本,在特定路径中加载一个db,并对其进行一些处理。db的位置目前在脚本中是硬编码的,但我想将db路径作为参数传递,并从变量中的路径加载它

现在看起来是这样的:

q) \l /path/to/dbDir        #Works
dbPath:`$.z.x 0
.Q.l dbPath
我发现.Q.l应该让我们使用一个变量来实现这一点,所以我尝试在脚本中使用以下内容:

dbPath:`$.z.x 0
.Q.l hsym dbPath            #Fails
当使用参数/path/to/dbDir运行时,脚本总是会失败,出现一些不可读的内容,并且:

':/path/to/dbDir: No such file or directory

有人能帮忙吗

好的,当我们尝试时,它似乎起作用。没有hsym的Q.l如下:

q) \l /path/to/dbDir        #Works
dbPath:`$.z.x 0
.Q.l dbPath
是的同义词,它只接受一个参数,该参数不是hsym,而是文件或目录名


顺便说一句,不可读的内容是函数定义,然后是一个类型错误(因为它不需要hsym)

\x…
总是等同于
系统“x…”
,这是“如何将变量传递给
\
命令问题”的一般解决方案

在你的情况下,你想要

system"l ",.z.x 0
(顺便说一句,我不认为
.Q.l
涉及代码的
\l
,只涉及数据,所以不要试图使用它来加载额外的.Q文件)