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}かっこ拡張を表します。

中括弧拡張は、任意の文字列を生成できるメカニズムです。このメカニズムはパス名拡張と似ていますが、生成されたファイル名が存在する必要はありません。中括弧を拡張するパターンは、オプションの序文、その後に一連のカンマ区切り文字列、または中括弧の間のシーケンス式、最後にオプションのポストスクリプトの形式を取ります。序文は中括弧内に含まれる各文字列の接頭辞であり、PostScriptは各結果文字列に追加され、左から右に展開されます。 (bash(1)マンページから)

したがって、次のように書くと:

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

私達は出力を得ます:

TagSet=Key=public TagSet=Value=yes

このパラメータを引用すると、中括弧の拡張を抑制できます。

関連情報