gpt4 book ai didi

bash - 测试 kdb 是否接受来自 bash 的连接

转载 作者:行者123 更新时间:2023-11-29 09:27:13 27 4
gpt4 key购买 nike

这是我的 kbd 脚本。它确实依赖于大量的环境文件。我的脚本无法连接到 KDB 数据库,因为它太忙而无法接受连接。我想在运行脚本之前测试与 kdb 的连接。我只想知道 kdb 是否正在接受连接并使其等于 bash 退出值。 0 或 1
这是我的 KDB 脚本:

system "l ",(getenv`CASPER),"/CASPER/q/CASPER_lib.q";
system "l ",(getenv`CASPER),"/CASPER/q/report_lib.q";
system "l ",(getenv`CASPER),"/reporting/q/reporting_utils.q";
\c 50 2000
\P 0

\p 0W
port:system"p"
3 (string port),"\n"
hclose 3

params:.Q.def [(`tradedate`CASPERhost)!(.z.d;`)] .Q.opt .z.x;
tradedate:params`tradedate;
CASPERhost:string params`CASPERhost;

h:.U.connect[`kdb;CASPERhost;"";()];
h1:.U.connect[`kdb;getenv`QUERY_GATEWAY;"";()];


hclose h;
hclose h1;

我想做的就是测试与 kdb 的连接 - 从 bash 脚本。打开关闭,就是看能不能连上数据库然而,当我运行 bash 时,它会进入 q 提示符。我必须用\(两个斜杠)手动关闭。我如何测试 kdb 数据库是否接受来自 bash 脚本的连接。

这是我的 bash 脚本

#!/bin/bash
q kdb_filehandle.q

最佳答案

您可以使用 with q 的 exit 命令以退出代码终止;

q)exit 1
$ echo $?
1

q) exit 0
$ echo $?
0

考虑到这一点,您可以错误地捕获您的连接并让它们在失败时以 1 退出/例如,如果您想捕获您的希望,您可以使用

.[.U.connect;(`kdb;CASPERhost;"";());exit 1]

在这里。是陷阱运算符,.U.connect 是您的函数,您的参数作为列表 () 传入,第三个参数是出错时执行的语句,在本例中为 exit 1。

http://code.kx.com/q/ref/errors/#trap

您还可以将 q 脚本作为 shebang 执行,以避免必须将脚本包装在 bash 中。刚开始你的脚本;

#!/usr/bin/env q

http://code.kx.com/q/cookbook/faq/#can-i-execute-q-as-a-shebang-script

关于bash - 测试 kdb 是否接受来自 bash 的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49268872/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com