如何在GitHub Actions中保存命令执行结果并实现条件判断
解决YAML中保存命令执行结果并判断的问题
你之前的写法错误在于把YAML步骤的if:语法混到了PowerShell脚本块里,if:是YAML配置层面的条件判断关键字,不能在PowerShell代码里使用,这才导致了报错:'if:' 未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。
下面给你两种可行的实现方式:
方式一:在PowerShell脚本内部完成判断
直接在run块里用纯PowerShell语法执行脚本、捕获结果并判断:
- name: 运行脚本并判断结果 shell: powershell run: | # 执行目标脚本 & .\script\outputZero.ps1 # 获取脚本的退出码 $status = $LASTEXITCODE # PowerShell的if判断语法(注意没有冒号) if ($status -eq 0) { Write-Host "输出是0" }
如果需要判断脚本的输出内容而非退出码,可以改成:
- name: 运行脚本并判断输出内容 shell: powershell run: | # 捕获脚本的输出内容 $output = .\script\outputZero.ps1 if ($output -eq "0") { Write-Host "输出是0" }
方式二:保存结果为环境变量,在YAML步骤间判断
如果需要在后续独立步骤中根据结果执行操作,可以把结果保存为步骤输出变量,再用YAML的if:条件判断:
- name: 运行脚本并保存结果 shell: powershell id: script-exec run: | & .\script\outputZero.ps1 $status = $LASTEXITCODE # 将结果写入GitHub输出变量,供后续步骤调用 echo "status=$status" >> $env:GITHUB_OUTPUT # 后续步骤根据结果判断是否执行 - name: 仅当结果为0时执行 if: steps.script-exec.outputs.status == '0' run: echo "输出是0"
内容的提问来源于stack exchange,提问作者DevopitionBro
相关产品推荐
相关产品推荐

