意外符號:if-then-else條件檢查的“are”

在我的工作流中進行下一個sep之前,需要對兩個環境變量進行同樣的檢查

  - name: version check
    env:
      version_in_code : "v$(poetry version -s)" 
      version_in_tag : $(git describe --exact-match --tags $(git log -n1 --pretty='%h')) 
      version_is_equal: ${{ env.version_in_code != env.version_in_tag }}
    run: |
      if [ ${{ env.version_is_equal }} ]; #here comes the error
      then
      echo " ${{ env.version_in_tag }} will be released"
      else
      git push -d origin ${{ env.version_in_tag }}
      echo "⛔? Tag-version: ${{ env.version_in_tag }} and Code-version: ${{ env.version_in_code are NOT equivalent"
      exit 1
      fi

在if條件檢查中不允許使用$env.version_is_equal,錯誤消息非常令人困惑:Unexpected symbol: 'are'如何解決這個問題?

? 最佳回答:

Gui指出了語法問題,但也存在Bash問題:

[ ${{ env.version_is_equal }} ]

[ true ][ false ]。這將始終計算為true,因為構造會檢查它是否包含non-empty字符串;它不關心字符串是true還是false

然后,可以將${{ env.version_is_equal }}替換為$version_is_equal;沒什么區別,但更方便。

要修復比較,您必須與字符串進行比較:

if [ "$version_is_equal" = 'true' ]; then

或將其作為命令運行(不帶[ ... ]),雖然較短,但更具魔力:

if "$version_is_equal"; then

這是因為truefalse是返回成功/失敗退出狀態的命令。


請注意

      version_in_tag : $(git describe --exact-match --tags $(git log -n1 --pretty='%h')) 

僅在使用時計算,而不是在分配時計算。在使用之前,它只是一個字符串。這可能是有意的,也可能不是有意的,但在我看來,將作業作為腳本本身的一部分更為明確:

version_in_tag=$(git describe --exact-match --tags $(git log -n1 --pretty='%h')) 
主站蜘蛛池模板: 国产一区三区三区| 一区二区三区四区免费视频| 精品人妻码一区二区三区| 无码av不卡一区二区三区| 日韩视频在线一区| 亚洲av午夜福利精品一区| 精品少妇人妻AV一区二区三区| 日本一区二区三区久久| 精品国产a∨无码一区二区三区| 夜夜精品无码一区二区三区| 亚洲一区AV无码少妇电影| 无码少妇一区二区性色AV| 在线精品亚洲一区二区三区| 一区二区三区四区无限乱码| 国产一区二区在线| 无码人妻啪啪一区二区| 亚洲国产韩国一区二区| 人妻体内射精一区二区三四| 久久久精品人妻一区亚美研究所 | 午夜一区二区在线观看| 久久久久人妻一区精品色| 少妇无码一区二区三区| 亚洲一区二区三区无码中文字幕| 一区二区三区在线播放| 日本一区二区三区在线视频观看免费 | 亚洲国产激情在线一区| 久久精品国产免费一区| 亚洲av日韩综合一区在线观看| 一区二区乱子伦在线播放| 波多野结衣AV无码久久一区| 国产成人精品一区二区三区无码| 精品亚洲一区二区三区在线观看| 精品国产AⅤ一区二区三区4区 | 无码人妻精品一区二区三18禁 | 国产91精品一区| 亚洲国产激情一区二区三区 | 国产在线无码视频一区| 动漫精品一区二区三区3d| 一区二区三区免费在线视频| 一区二区三区无码视频免费福利 | 人妻aⅴ无码一区二区三区|