If statement Github操作如果表达式语法有问题

If statement Github操作如果表达式语法有问题,if-statement,github-actions,If Statement,Github Actions,我需要检查steps.get_acc.outputs.acc是否小于1,但是现在steps.get_acc.outputs.acc是一个字符串,如何使其成为整数 cml.yaml name: MOPS on: [push] jobs: run: runs-on: [ubuntu-latest] steps: - uses: actions/checkout@v2 - uses: iterative/setup-cml@v1 - uses:

我需要检查steps.get_acc.outputs.acc是否小于1,但是现在steps.get_acc.outputs.acc是一个字符串,如何使其成为整数

cml.yaml

name: MOPS
on: [push]
jobs:
  run:
    runs-on: [ubuntu-latest]
    steps:
      - uses: actions/checkout@v2
      - uses: iterative/setup-cml@v1
      - uses: actions/setup-python@v2
        with:
          python-version: '3.x'
      - name: cml
        id: get_acc
        shell: pwsh  
        env:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
        run: |
          pip3 install -r requirements.txt
          python train.py
          $firstLine = Get-Content -Path 'metrics.txt' -TotalCount 1
          $digits = $firstline.Split(':')[-1]
          $acc = [int]$digits
          Write-Output "::set-output name=acc::$acc"        
    
      - name: Check acc
        if: ${{steps.get_acc.outputs.acc <1 }}
        uses: actions/github-script@v3
        with:
         script: |
          core.setFailed('Accuracy dropped')
名称:MOPS
on:[推]
工作:
运行:
运行于:[ubuntu最新版本]
步骤:
-用途:行动/checkout@v2
-用途:迭代/设置-cml@v1
-用途:操作/设置-python@v2
与:
python版本:“3.x”
-姓名:cml
id:get_acc
外壳:pwsh
环境:
repo_令牌:${{secrets.GITHUB_令牌}
运行:|
pip3安装-r requirements.txt
python train.py
$firstLine=获取内容-路径'metrics.txt'-TotalCount 1
$digits=$firstline.Split(“:”)[-1]
$acc=[int]$digits
写入输出“::设置输出名称=acc::$acc”
-名称:检查acc
if:${{steps.get_acc.outputs.acc说明:

输出参数将映射到的值可以设置为字符串或具有上下文的表达式。例如,可以使用步骤上下文将输出值设置为步骤的输出值

看一看,我们可以注意到:

作为表达式的一部分,我们可以使用boolean、null、
number
或string数据类型。boolean文本不区分大小写,因此我们可以使用true或true

因此,这完全取决于设置输出变量的方式

将数字设置为输出的示例:

outputs:
  random-number:
    description: "Random number"
    value: ${{ steps.random-number-generator.outputs.random-id }}
runs:
  using: "composite"
  steps:
    - id: random-number-generator
      run: echo "::set-output name=random-id::$(echo $RANDOM)"
      shell: bash
  job:
    runs-on: ubuntu-latest
    steps:
      
      - name: step-1
        id: xyz
        run: echo "::set-output name=acc::$(echo $RANDOM)"
      
      - name: step-2
        if: steps.xyz.outputs.acc < 1
        run: |
          echo "Number lower than 1"
          echo "${{ steps.xyz.outputs.acc }}"
      
      - name: step-3
        if: steps.xyz.outputs.acc > 1
        run: |
          echo "Number higher than 1"
          echo "${{ steps.xyz.outputs.acc }}"
编辑:

outputs:
  random-number:
    description: "Random number"
    value: ${{ steps.random-number-generator.outputs.random-id }}
runs:
  using: "composite"
  steps:
    - id: random-number-generator
      run: echo "::set-output name=random-id::$(echo $RANDOM)"
      shell: bash
  job:
    runs-on: ubuntu-latest
    steps:
      
      - name: step-1
        id: xyz
        run: echo "::set-output name=acc::$(echo $RANDOM)"
      
      - name: step-2
        if: steps.xyz.outputs.acc < 1
        run: |
          echo "Number lower than 1"
          echo "${{ steps.xyz.outputs.acc }}"
      
      - name: step-3
        if: steps.xyz.outputs.acc > 1
        run: |
          echo "Number higher than 1"
          echo "${{ steps.xyz.outputs.acc }}"
此外,如果
条件使用的语法不正确,则需要删除
${{
}
,以使其正常工作

带有if条件的示例:

outputs:
  random-number:
    description: "Random number"
    value: ${{ steps.random-number-generator.outputs.random-id }}
runs:
  using: "composite"
  steps:
    - id: random-number-generator
      run: echo "::set-output name=random-id::$(echo $RANDOM)"
      shell: bash
  job:
    runs-on: ubuntu-latest
    steps:
      
      - name: step-1
        id: xyz
        run: echo "::set-output name=acc::$(echo $RANDOM)"
      
      - name: step-2
        if: steps.xyz.outputs.acc < 1
        run: |
          echo "Number lower than 1"
          echo "${{ steps.xyz.outputs.acc }}"
      
      - name: step-3
        if: steps.xyz.outputs.acc > 1
        run: |
          echo "Number higher than 1"
          echo "${{ steps.xyz.outputs.acc }}"
作业:
运行于:ubuntu最新版本
步骤:
-名称:步骤1
id:xyz
运行:echo:::设置输出名称=acc::$(echo$随机)
-名称:步骤2
如果:steps.xyz.outputs.acc<1
运行:|
回显“数字小于1”
回显“${steps.xyz.outputs.acc}”
-名称:步骤3
如果:steps.xyz.outputs.acc>1
运行:|
回显“数字大于1”
回显“${steps.xyz.outputs.acc}”

看起来您已经得到了关于如何将其作为整数处理的答案,但前提是您正在通过代码设置输出。为什么不在代码中计算整数,然后设置真/假布尔值或Y/N字符串?如果您只需要将该值用作If条件,为什么还要费心设置整数值?您可以这样做只需计算它并在源代码处设置条件。

我很困惑,你能告诉我如何生成if:${{steps.get_acc.outputs.acc没有问题,我在
job5
中做了一个示例:基本上,你不需要if条件中的
${{/code>
}
。我将用正确的语法更新上面的答案。