aws s3api
bash 쉘이 명령을 올바르게 해석하려면 아래 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
이 매개변수를 인용하면 중괄호 확장을 억제할 수 있습니다.