gpt4 book ai didi

bash - 有条件地运行脚本在 travis.yml 中不起作用,为什么?

转载 作者:行者123 更新时间:2023-11-29 08:45:10 25 4
gpt4 key购买 nike

以下导致 travis 根本无法构建。当我尝试验证 travis.yml 文件时,它提示 if 语句正上方的行在第 3 列缺少 - 字符,但错误必须做使用下面的 if 语句。

我是否必须将 if 语句移到脚本中?

# Deploy
after_success:
- ./tools/docker-push-container.sh
- if [ $TRAVIS_BRANCH == "master" && $TRAVIS_PULL_REQUEST == "false" ]; then
./.travis/success_message.sh
fi

最佳答案

您对 YAML 语法做出了一些假设,这会导致您出现问题。如果您通过缩进后续行来“扩展”一行 YAML,如下所示:

- The quick brown fox
jumped over the
lazy dog.

这和你写的完全一样:

- The quick brown fox jumped over the lazy dog.

这意味着你的 shell 片段,你写成:

  - if [ $TRAVIS_BRANCH == "master" && $TRAVIS_PULL_REQUEST == "false" ]; then
./.travis/success_message.sh
fi

实际上变成了:

if [ $TRAVIS_BRANCH == "master" && $TRAVIS_PULL_REQUEST == "false" ]; then ./.travis/success_message.sh fi

如果您尝试在 shell 中运行该行,您将得到:

sh: -c: line 1: syntax error: unexpected end of file

如果您想在 YAML 文档中包含多行 shell 脚本,最好的办法可能是使用逐字 block 运算符 |,如下所示:

  - |
if [ $TRAVIS_BRANCH == "master" && $TRAVIS_PULL_REQUEST == "false" ]; then
./.travis/success_message.sh
fi

如预期的那样,这将导致:

if [ $TRAVIS_BRANCH == "master" && $TRAVIS_PULL_REQUEST == "false" ]; then
./.travis/success_message.sh
fi

或者,您可以正确使用分号:

  - if [ $TRAVIS_BRANCH == "master" && $TRAVIS_PULL_REQUEST == "false" ]; then
./.travis/success_message.sh;
fi

注意终端 fi 之前的新 ;。这导致:

if [ $TRAVIS_BRANCH == "master" && $TRAVIS_PULL_REQUEST == "false" ]; then ./.travis/success_message.sh; fi

...这是完全有效的 shell 语法。

关于bash - 有条件地运行脚本在 travis.yml 中不起作用,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38789253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com