退出代码


WP-CLIWP-CLI WP-CLI 是 WordPress 的命令行界面,用于以编程方式执行管理和开发任务。项目页面是 http://wp-cli.org/ https://make.wordpress.org/cli/ 遵循广泛采用的 Unix 退出代码约定:0 表示成功(命令的主要条件已满足),而非零值表示主要条件未满足。这可能表示操作错误(命令无法执行请求的操作),也可能表示调用脚本需要测试的预期否定结果(例如“未安装”)。调用 WP-CLI 命令的脚本可以检查退出代码,以决定是继续、重试还是中止。

标准退出代码

退出代码 含义
0 命令成功完成。请求的操作已按预期执行。
1 命令失败。WP-CLI 无法按预期执行操作(例如参数无效、未找到 WordPress 或遇到致命错误)。

WP_CLI::error()文档)是报告失败并以代码 1 退出的惯用方式。

当命令需要向调用脚本传达特定结果时,可以使用 WP_CLI::halt()文档)以特定的非零代码退出。

布尔结果命令的退出代码

有些命令旨在直接通过退出代码而不是输出传达二元结果。这些命令仍使用标准的 0/1 代码,但 1 表示“条件未满足”,而不是“操作错误”。例如:

  • 如果 插件插件 插件是一段包含一组函数的软件,可以添加到 WordPress 网站中。它们可以扩展功能或为 WordPress 网站添加新特性。WordPress 插件使用 PHP 编程语言编写,并与 WordPress 无缝集成。这些插件可以在 WordPress.org 插件目录 https://wordpress.org/plugins/ 中免费获取,也可能是第三方收费插件。 已安装,wp plugin is-installed <plugin> 将以 0 退出;如果未安装,则以 1 退出。
  • wp theme is-installed <theme> 遵循相同的模式。
  • 安装 WordPress 时,wp core is-installed0 退出;未安装时以 1 退出。

在以下情况下,使用退出代码 1 表示“条件未满足”(而不是错误):

  1. 命令结果是二元的(通过/失败、找到/未找到),并且旨在直接在 shell 条件语句中进行测试。
  2. 意图已得到明确记录,因此脚本作者知道该退出代码传达的是结果含义,而不是错误含义。

对于仅具信息性的条件,不要返回非零退出代码,因为这类条件并非确定性结果(例如,未找到任何项目的列表命令仍然是一次成功的操作——它返回了一个空列表)。

在脚本中使用退出代码

由于 WP-CLI 使用标准退出代码,因此可以直接在 shell 条件语句中使用 WP-CLI 命令:

# 在尝试激活插件之前检查插件是否已安装
if wp plugin is-installed my-plugin; then
    wp plugin activate my-plugin
else
    echo "插件未安装"
    exit 1
fi

你还可以在任何 WP-CLI 命令之后检查 $?,以确认命令是否成功:

wp core update
if [ "$?" -ne 0 ]; then
    echo "更新失败"
fi