gpt4 book ai didi

sql - 如何在 linux shell 上的 sql 查询中使用 "%"字符?

转载 作者:行者123 更新时间:2023-12-02 09:38:29 25 4
gpt4 key购买 nike

我正在尝试通过 pssh 向 linux shell 上的 osquery 发送 sql select 语句来拉取安装在一组主机上的所有 jdk 包。

这是查询:
pssh -h myhosts -i 'echo "SELECT name FROM rpm_packages where name like '%jdk%';"| osqueryi --json'
但是“%”的使用给了我以下错误。
Error: near line 1: near "%": syntax error
我试图逃避 % ,但错误仍然相同。任何想法如何克服这个错误?

最佳答案

你不是从你的 shell 而是从查询解析器得到这个错误,它实际上不是由 % 引起的。字符,但到 '紧随其后。看看你有引号的地方:

'echo "SELECT name FROM rpm_packages where name like '%jdk%';"| osqueryi --json'
^----------------------------------------------------^ ^-------------------^

shell 在解析参数时会使用这些引号。单引号告诉 shell 忽略里面的任何其他特殊字符,并将引号内的内容视为参数的一部分——但不是引号本身。

shell 解析完成后,实际的逐字参数被发送到 pssh看起来像这样:
echo "SELECT name FROM rpm_packages where name like %jdk%;"| osqueryi --json

请注意,所有单引号都已删除。结果是您的查询工具看到了 % (大概是模数)运算符在它不期望的地方——紧跟在另一个运算符( like )之后,它对解析器的意义与 name like * jdk 一样重要.解析器不明白有两个连续的二元运算符意味着什么,所以它提示第二个: % .

为了得到文字 '在那里,你需要跳过这个箍:
'\''
^^^^- start quoting again
|||
|\+-- literal '
|
\---- stop quoting

因此,要解决此问题,请替换所有 '字符串中的实例,带有 '\'' :
pssh -h myhosts -i 'echo "SELECT name FROM rpm_packages where name like '\''%jdk%'\'';"| osqueryi --json'

关于sql - 如何在 linux shell 上的 sql 查询中使用 "%"字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61831974/

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