首页 > 解决方案 > 如何在 bash 脚本的 wp 注释列表中使用 date_query 参数

问题描述

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

它将在 nagios 插件中使用

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

我将使用datebash 命令与 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 参数中找到正确的语法。

这些命令仍然返回整个评论的数量,而不是过去 4 小时内的评论数量。

来源:wp评论列表

--date_query 指的是 WP_Date_Query

谢谢您的帮助

标签: wordpressbashnagios

解决方案


似乎您对拆分和引用有基本的误解。分配变量时$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

如果我们假设 的值为$now2020-02-24 07:00:00,则参数将按如下方式拆分:

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

您需要引用此内容以避免分裂。为简单起见,我建议在整个字符串上使用双引号(我还在后面的单词后面添加了一个空格):

"--date_query=after $now"

编辑: 将来,请尝试使用shellcheck.net,或者您可以将本地版本下载到您的机器上。Shellcheck 会为您发现这个错误。


推荐阅读