0

我试图在 AWS 控制台中为 Cloudwatch 指标过滤模式带来如下输出

[w1,w2,w3,w4=!"*10.1.1.1*"&&w5=!"*10.1.1.2*"&&w5="*admin*"]

对于我的一个具有以下功能的 ruby​​ aws sdk 脚本

data_of_ips = ["10.1.1.1", "10.1.1.2"]

def run_me(data_of_ips)
    :::
    ::: 
    filter_pattern = '[w1,w2,w3,w4!='"*#{data_of_ips[0]*"'&&w4!='"*#{data_of_ips[1]*"',w5="*admin*"]'

但在 aws 控制台输出中,我可以看到如下输出,没有 w4 的 "(双引号)。

[w1,w2,w3,w4=!*10.1.1.1*&&w4=!*10.1.1.2*&&w5="*admin*"]

请帮我解决这个问题。

4

2 回答 2

0

这是你所期望的吗?

data_of_ips = ["10.1.1.1", "10.1.1.2"]
def run_me(data_of_ips)
  "[w1,w2,w3,w4!=\"*#{data_of_ips[0]}*\"&&w4!=\"*#{data_of_ips[1]}*\"&&w5=\"*admin*\"]"
end

puts run_me(data_of_ips)
# => [w1,w2,w3,w4!='"*10.1.1.1*"&&w4!="*10.1.1.2*"&&w5="*admin*"]

如果你想将变量或脚本放在字符串中,我建议你可以使用双引号#{}来做到这一点。更清楚了。像你这样的特殊字符"可以\"用来写它们。

于 2021-11-25T05:27:01.887 回答
0

我这样修复它:

filter_pattern = '[w1,w2,w3,w4!="'"*#{data_of_ips[0]}*"'"&&w4!="'"*#{data_of_ips[1]}*"'"w5="*admin"]'

我使用"'"(双引号单引号双引号)并得到以下预期输出:

filter_pattern = '[w1,w2,w3,w4!="*10.1.1.1*"&&w4!="*10.1.1.2*",w5"*admin*"]'
于 2021-11-25T18:10:52.500 回答