Bash
bash 無法解釋在 GitHub Ubuntu 中使用花括號的 cli 命令
aws s3api
為了讓 bash shell 正確解釋命令,需要在下面的 cli 命令中更改哪些特定語法?該環境是 ubuntu 最新的 GitHub 執行程序,使用 bash shell 執行 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 命令。
該問題可能與 bash 中環境變數的 GitHub 工作流語法有關,它看起來像 ${envVarName}。還是有其他問題?
你只需要引用你的論點:
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
通過引用這個論點,我們禁止大括號擴展。