我想要一个包含各种文件的文件夹,这些文件将在弹回应用程序时替换默认文件。
例如。如果我有一个
example1.csv
加载到 proc1.q
和
example1.csv
的路径是/a/b/c/example1.csv
我希望能够放置我可以修改的
/a/b/temporary/example1.csv
,如果我弹跳proc1.q
,它将在我的应用程序中被拾取。
我认为最好的方法是使用
$PATH
,但我的文件不是可执行文件。
另一个想法是创建文件位置和文件名的映射,例如
file1.csv | /a/b/c/file1.csv
file2.csv | /a/b/c/file2.csv
file3.q | /a/b/file3.q
有什么建议吗?
原因是我有某些文件会针对运行应用程序的每个服务器动态更改,我想每天提交到 gitlab 并跟踪每个服务器上应用程序的状态。
如果您可以按照您的建议访问命令行,那么您可以使用
.Q.def
和 .Q.opt
来接受默认的命令行参数。例如
> cat test.q
show files:.Q.def[`file1`file2`file3!(`$"/a/b/c/file1.csv";`$"/a/b/c/file2.csv";`$"/a/b/file3.q")].Q.opt .z.x;
>
> q test.q
KDB+ 3.5 2020.11.27 Copyright (C) 1993-2020 Kx Systems
file1| /a/b/c/file1.csv
file2| /a/b/c/file2.csv
file3| /a/b/file3.q
q)\\
> q test.q -file1 /a/b/temporary/file1.csv -file3 /a/b/c/d/file3.q
KDB+ 3.5 2020.11.27 Copyright (C) 1993-2020 Kx Systems
file1| /a/b/temporary/file1.csv
file2| /a/b/c/file2.csv
file3| /a/b/c/d/file3.q
因此,您可以在需要时将覆盖传递给命令行,否则您将回退到默认值。
您可以通过在弹起实例之前设置环境变量并使用
getenv
拉入环境变量来执行类似的操作 - 如果它们为空,则恢复为默认值。