LLL*_*LLL 3 windows git-bash aws-cli
我有一个 AWS SSM CLI 命令的字符串参数,由于以/
. /path/to/my/param
.
当我在 git bash 上运行命令时,它会尝试查找文件,无论我如何尝试转义它:
aws ssm get-parameter --name "/path/to/my/param"
aws ssm get-parameter --name '/path/to/my/param'
aws ssm get-parameter --name '\/path\/to\/my\/param'
An error occurred (ValidationException) when calling the GetParameter operation: Invalid label format /Program Files/Git/path/to/my/param. A label name can't be prefixed with numbers, "ssm", or "aws" (case-insensitive). You can specify letters, numbers, and the following symbols: period (.), dash (-), or underscore (_).
甚至尝试反引号,然后我收到一个 bash 错误
aws ssm get-parameter --name `/path/to/my/param`
Run Code Online (Sandbox Code Playgroud)
错误: bash: /path/to/my/param: No such file or directory
如果我这样做echo /asd/asd
实际上是输出/asd/asd
,那么它也可能是 aws cli 处理输入的方式。
任何想法如何逃避它?
在再次偶然发现这个问题之后,但这一次是为了:aws logs describe-log-groups --log-group-name-prefix ...
,我决定尝试“n”找到一个更可持续的解决方案。
我发现了一篇 SO 帖子,它提供了对根本问题的解释以及我认为更好的解决方案,即:
MSYS_NO_PATHCONV=1 aws ...
Run Code Online (Sandbox Code Playgroud)
这适用于从 Windows 上的 Git Bash 调用时遇到此正斜杠问题的任何 aws cli 命令。
当然,请访问:/sf/answers/3922417831/
似乎我的第一个答案恰好有效,aws ssm get-parameter
因为 cli 的这一部分在返回所需值的意义上更加宽容,即使在提供前导空间时也是如此。然而,在进一步检查返回值后,我回想起来注意到返回参数的名称也包含前导空格,这使得禁用路径转换的解决方案 - 到目前为止 - 是更好的选择。
如果将来有人遇到这个问题:
我抓住救命稻草随机解决了这个问题。
对我来说,诀窍是在用双引号括住参数名称后的第一个正斜杠之前放置一个空格,即:
Run Code Online (Sandbox Code Playgroud)aws ssm get-parameter --name " /path/to/my/param"
(促使我尝试的 GitHub 问题:https://github.com/bmatzelle/gow/issues/196)
小智 6
可以在 MSYS2 中关闭选定路径的路径转换(请参阅Msys2 移植,文件系统命名空间部分)。
您还可以通过以下方式暂时禁用它:
MSYS2_ARG_CONV_EXCL="/aws" aws ssm get-parameter --name '/aws/path/to/my/param'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
822 次 |
最近记录: |