我正在尝试在 .lando.yml 文件中设置一些工具,以快速完成我在每次新安装 WordPress 时执行的多项任务。一切工作都很好,除了我尝试使用 [--extra-php]
wp-cli 中的选项和语法如 wp-cli 文档中所示。
运行命令时出现以下错误:/bin/sh: 1: Syntax error: "(" unexpected
如果我删除从 <<PHP
开始的代码并于收盘 PHP
结束,一切都完美执行。
我假设我需要以某种方式转义括号,但是如何在 YAML 中正确地做到这一点?虽然我没有具体获得 YAML,所以我也不确定这是否真的是问题所在。
配置的相关部分: 错误发生在第一个括号处。
tooling:
npm:
service: node
wp-install:
service: appserver
cmd:
- wp config create --dbname=wordpress --dbuser=wordpress --dbpass=wordpress --dbhost=database --extra-php <<'PHP'
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'ACF_PRO_LICENSE', 'XXX');
PHP
- wp core install --url=http://$LANDO_APP.$LANDO_DOMAIN --title=XXX --admin_user=StudioAl --admin_password=XXX <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2409094540494d4a7b4149454d48194f4156564d64575051404d4b45480a474b49" rel="noreferrer noopener nofollow">[email protected]</a>
- wp plugin install gravityformscli --activate
- wp gf install --XXX --activate
- wp plugin install "http://connect.advancedcustomfields.com/index.php?p=pro&a=download&k=XXX" --activate
wp-cli 文档中问题代码的使用示例,供引用
# Enable WP_DEBUG and WP_DEBUG_LOG
$ wp config create --dbname=testing --dbuser=wp --dbpass=securepswd --extra-php <<PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
PHP
Success: Generated 'wp-config.php' file.
最佳答案
YAML 解析器加载此内容:
- wp config create --dbname=wordpress --dbuser=wordpress --dbpass=wordpress --dbhost=database --extra-php <<PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'ACF_PRO_LICENSE', 'XXX');
PHP
作为包含单个项目的序列,该项目是一个字符串不包含任何换行符。这就像:
["wp config create --dbname=wordpress --dbuser=wordpress --dbpass=wordpress --dbhost=database --extra-php <<PHP define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'ACF_PRO_LICENSE', 'XXX'); PHP"]
如果将该字符串传递给(Unix)shell,IMO 不会将其解释为 heredoc因为分隔标识符 (PHP
) 不会单独出现在一行中。
如果通过在标量前插入管道符号将该标量设为文字样式标量,您可能会取得更大的成功:
- |
wp config create --dbname=wordpress --dbuser=wordpress --dbpass=wordpress --dbhost=database --extra-php <<PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'ACF_PRO_LICENSE', 'XXX');
PHP
这样加载的字符串包括换行符(但没有前导空格)
关于yaml - Lando 工具命令语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76709013/