bash가 여러 단어 문자열을 cli 명령으로 구문 분석하지 않습니다.

bash가 여러 단어 문자열을 cli 명령으로 구문 분석하지 않습니다.

여러 단어로 구성된 문자열이 생성된 GitHub 릴리스의 설명에 성공적으로 전달되려면 아래 GitHub 워크플로의 CLI 명령 플래그에서 -f body=$DESCRIPTION구체적으로 무엇을 변경해야 합니까 ?gh api"Lots of new stuff"

현재 우리가 겪고 있는 문제는 이 문자열이 1개의 인수가 필요하지만 4개의 ​​인수가 수신되었다는 "Lots of new stuff"오류를 발생시킨다는 것입니다.body

단일 단어 문자열을 동일한 워크플로에 전달하면 오류 없이 성공적으로 실행됩니다.

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"하면 괜찮을 것입니다. 위의 링크도 찾아보시고 한 번 살펴보시기 바랍니다.매개변수 확장그리고 철저한 이해.

관련 정보