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"
我在 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"