如何在bash脚本中的wp注释列表中使用date_query参数

问题描述 投票:0回答:2

我想创建一个bash脚本来计算4个小时前在wordpress中的注释数。

将在nagios插件中使用

我想将“ wp comment list”或某些wp cli命令用于wordpress请求

我将使用date bash命令与wp cli进行交互。

我试图拥有类似的东西

#!/bin/bash

now=$(date --date="4 hour ago" '%Y-%m-%d %T')

nbr_comment=$(wp comment list --patch=FULL/PATH/TO/wordpress --status=approve "--date_query=after $now" --format=count);

echo -e“ nbr_comment \ n $ now”

我的问题现在是在date_query参数中找到正确的语法。

命令stil返回整个注释数,而不是最近4小时的注释数。

来源:wp评论列表

-date_query参考WP_Date_Query

感谢您的帮助

wordpress bash nagios
2个回答
0
投票

似乎您对分割和引用有基本的误解。分配变量$now时,将在命令替换中运行以下命令:

date --date="4 hour ago" +%Y-%m-%d %T

这将抱怨额外的操作数(%T)。此命令的参数按以下方式分解:

--date="4 hour ago" # Optional argument
+%Y-%m-%d           # Output format
%T                  # Extra operand

使用引号将输出格式分组以解决此问题:

date --date="4 hour ago" '+%Y-%m-%d %T'
# With the variable assignment
now=$(date --date="4 hour ago" '+%Y-%m-%d %T')

您的wp命令在date_query参数中也遇到相同的问题。 (我将假设星号是在代码块中进行标记的尝试。)该参数如下所示:

--date_query='after'$now

如果我们假设$now的值为2020-02-24 07:00:00,则参数将像这样拆分:

--date_query=after2020-02-24 
07:00:00

您需要引用此名称以避免分裂。为简单起见,我建议对整个字符串使用双引号(在单词after之后也添加了一个空格):

"--date_query=after $now"

编辑:以后,请尝试使用shellcheck.net,或者您可以将本地版本下载到计算机上。 Shellcheck会为您捕获此错误。


0
投票

非常感谢您的回答和准确性。

对不起,日期命令,真正的代码是:

date --date="4 hour ago" +%T-%m-%d\ %T

但是您的命令具有相同的结果。

对于WP命令,我没有找到获得主要结果的方法。是的,我试图突出显示--date_query命令。

无论如何,当我像您建议的那样放置命令时:

#!/bin/bash

now=$(date --date="4 hour ago" '+%Y-%m-%d %T')

nbr=$(wp comment list --path=/var/www/wordpress "--date_query=after $now" --format=count);

echo -e "$nbr\n$now"

它计算所有评论,而不是最近四个小时。

© www.soinside.com 2019 - 2024. All rights reserved.