我想创建一个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
感谢您的帮助
似乎您对分割和引用有基本的误解。分配变量$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会为您捕获此错误。
非常感谢您的回答和准确性。
对不起,日期命令,真正的代码是:
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"
它计算所有评论,而不是最近四个小时。