【问题标题】:Gitlab: How to check if a string is one of three valuesGitlab:如何检查字符串是否是三个值之一
【发布时间】:2021-10-22 08:50:08
【问题描述】:

我们希望确保用户从有效选项列表中输入一个值。由于我们无法定义有效值的预设值,因此我们目前正在尝试使用 if 语句来实现。

但是,我们很难找出 OR 运算符的 if 语法。

我们目前拥有的:

variables:
    BUMP_TYPE: 'no-release-just-build'
...
  before_script:
      - >
        if [[ "$BUMP_TYPE" = "no-release-just-build"] || ["$BUMP_TYPE" = "patch" ]]; then
          echo "valid $BUMP_TYPE"
        else
          echo "invalid $BUMP_TYPE"
        fi

但是这会输出:“invalid no-release-just-build” --> else case

为什么"$VERSION" = "no-release-just-build" 不正确?

【问题讨论】:

  • ${VERSION} 的值是多少?
  • 抱歉,我已经通过了旧版本的测试。$VERSION 应该是 $BUMP_TYPE
  • 使用shellcheck.net。两个一般注意事项:首先,那些方括号不是括号;不要试图将它们用作括号。二、shell语法中的空格matter;如果您可以按照您尝试的方式使用方括号,那么您需要在它们和您尝试测试的字符串之间留有空格。

标签: bash gitlab


【解决方案1】:

有点不同的方法,我喜欢做的 - 而不是在脚本中编写 bash 脚本 - 是基于类似规则的前期工作

Param-check:
  stage: .pre
  script:
    - echo "invalid version:$VERSION - please use ..."
    - exit 1
  rules:
    - if: $VERSION == "value1"
      when: never
    - if: '$VERSION == "value1" || $VERSION == "value2"'
      when: never
    - when: always

这样我可以让我的脚本和之前的代码块清除验证

也可以使用正则表达式作为规则,但我在手机上,因此编写正则表达式非常困难 - 我也无法验证我的脚本。但我认为我展示了总体思路

【讨论】:

  • 我忘记了重要的部分......而且我不能走运;(exit 1;
  • 我正在尝试用我的手机 ci lint ;) 我尽力了
  • 我现在用 ci lint 验证了 yaml,它应该可以工作 - 很抱歉给您带来不便
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-13
  • 2022-03-31
  • 2013-05-12
  • 1970-01-01
相关资源
最近更新 更多