q - 使用 try catch 加载脚本

q - loading script with try catch

我在 C:\some\path\startup.q 上有一个 q 脚本,它像这样将其他几个 q 脚本加载到当前会话中

\l C:\some\other\path\script1.q
\l C:\some\other\path\script2.q
\l C:\some\other\path\script3.q

现在,我可能想检查 script1.q 等的多个路径。例如当我在部署环境而不是本地环境中时,这些路径是不同的。 所以我想按照

尝试捕捉加载运算符
@[\l;C:\some\other\path\script1.q;`errormessage]

这当然是废话。但是我在描述为here的q中找到了system命令。例如

\w / lists memory usage
system "w" / same command

但是,这不适用于 \l

system "l C:\some\path\startup.q"

感谢您的帮助

您需要转义反斜杠或使用 Unix 风格的路径,例如

system "l C:/some/path/startup.q"

所以有了异常处理:

@[system; "l C:/some/path/startup.q"; `errormsg]

反斜杠是 kdb 中字符串的转义字符,因此文件路径中的反斜杠会阻止系统命令运行。要解决此问题,您需要转义反斜杠。

使用以下方法应该适合您:

system "l C:\some\path\startup.q"