bash 未将多字字符串解析为 cli 命令

bash 未将多字字符串解析为 cli 命令

为了使多字字符串成功传递到生成的 GitHub 版本的描述中,下面的 GitHub 工作流程中的 CLI 命令-f body=$DESCRIPTION标志中具体需要更改哪些内容?gh api"Lots of new stuff"

我们当前遇到的问题是该"Lots of new stuff"字符串会导致错误,指出body需要 1 个参数,但收到了 4 个参数。

当我们将单个单词字符串传递到同一工作流程中时,它会成功运行,不会出现错误。

当我们将body标志更改为 read时-f body='$DESCRIPTION',发布的结果描述将呈现为$DESCRIPTION

工作流程代码:

name: release-manually
on:
  workflow_dispatch:
    inputs:
      version:
        description: 'Version'
        required: true
        type: string
      description:
        description: 'Description of release'
        required: true
        type: string
jobs:
  release-a-version:
    runs-on: ubuntu-latest
    steps:
      - shell: bash
        name: Release
        env:
          DESCRIPTION: ${{ inputs.description }}
          VERSION: ${{ inputs.version }}
          GH_TOKEN: ${{ secrets.GIT_PAT }}
        run: |
          vers="_linux_"$VERSION
          echo "About to print version"
          echo $vers
          nameOfRelease="release_name"$vers
          echo "About to print name of release"
          echo $nameOfRelease 
          echo "About to create release"
          gh api \
            --method POST \
            -H "Accept: application/vnd.github+json" \
            /repos/AccountName/RepoName/releases \
            -f tag_name=$vers \
            -f target_commitish='branch-name' \
            -f name=$nameOfRelease \
            -f body=$DESCRIPTION \
            -F draft=false \
            -F prerelease=false \
            -F generate_release_notes=false 

答案1

我认为这个问题不会让我学到新东西,我纠正了。

首先,我认为这个问题可以被标记为重复的引号的解释正如@rugk 所说据说是重复的 stackoverflow 问题

现在有趣的部分是我不知道有什么功能与VAR=$'hello\nworld'以下内容完全相同:

VAR='hello
world'

使用-f body="$DESCRIPTION",你应该没问题。另请浏览上面的链接,也许看看参数扩展以及一个透彻的理解。

相关内容