bash는 GitHub Ubuntu에서 중괄호를 사용하여 cli 명령을 해석할 수 없습니다.

bash는 GitHub Ubuntu에서 중괄호를 사용하여 cli 명령을 해석할 수 없습니다.

aws s3apibash 쉘이 명령을 올바르게 해석하려면 아래 cli 명령에서 어떤 특정 구문을 변경해야 합니까?

이 환경은 bash 쉘을 사용하여 GitHub 워크플로우를 실행하는 ubuntu 최신 GitHub 실행 프로그램입니다.

GitHub Ubuntu 실행기의 인터럽트 명령은 다음과 같습니다.

aws s3api put-object-tagging --bucket s3.bucket.name --key filename.tar.gz --tagging TagSet={Key=public,Value=yes}

발생한 오류는 다음과 같습니다.

Unknown options: TagSet=Value=yes

cmd.exe를 사용하여 동일한 명령이 Windows 노트북에서 완벽하게 실행되므로 코드는 유효한 aws cli 명령입니다.

이 문제는 ${envVarName}과 유사한 bash의 환경 변수에 대한 GitHub 워크플로 구문과 관련이 있을 수 있습니다. 아니면 다른 질문이 있나요?

답변1

당신의 주장을 인용하면 됩니다:

aws s3api put-object-tagging --bucket s3.bucket.name --key filename.tar.gz \
  --tagging "TagSet={Key=public,Value=yes}"

Bash의 구문은 {a,b,c}중괄호 확장을 나타냅니다.

중괄호 확장은 임의의 문자열을 생성할 수 있는 메커니즘입니다. 이 메커니즘은 경로 이름 확장과 유사하지만 생성된 파일 이름이 존재할 필요는 없습니다. 중괄호를 확장하는 패턴은 선택적 서문, 그 뒤에 일련의 쉼표로 구분된 문자열 또는 중괄호 사이의 시퀀스 표현식, 마지막으로 선택적 사후 스크립트의 형태를 취합니다. 서문은 중괄호 안에 포함된 각 문자열의 접두사이며, 포스트스크립트는 각 결과 문자열에 추가되어 왼쪽에서 오른쪽으로 확장됩니다. ( bash(1)맨 페이지에서)

따라서 다음과 같이 작성하면:

echo TagSet={Key=public,Value=yes}

우리는 출력을 얻습니다:

TagSet=Key=public TagSet=Value=yes

이 매개변수를 인용하면 중괄호 확장을 억제할 수 있습니다.

관련 정보