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}
かっこ拡張を表します。
中括弧拡張は、任意の文字列を生成できるメカニズムです。このメカニズムはパス名拡張と似ていますが、生成されたファイル名が存在する必要はありません。中括弧を拡張するパターンは、オプションの序文、その後に一連のカンマ区切り文字列、または中括弧の間のシーケンス式、最後にオプションのポストスクリプトの形式を取ります。序文は中括弧内に含まれる各文字列の接頭辞であり、PostScriptは各結果文字列に追加され、左から右に展開されます。 (
bash(1)
マンページから)
したがって、次のように書くと:
echo TagSet={Key=public,Value=yes}
私達は出力を得ます:
TagSet=Key=public TagSet=Value=yes
このパラメータを引用すると、中括弧の拡張を抑制できます。