我有一个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`
错误:bash: /path/to/my/param: No such file or directory
如果我执行echo /asd/asd
,它实际上输出/asd/asd
,所以aws cli也可能是这样处理输入的。
有办法逃脱吗?
2条答案
按热度按时间mbjcgjjk1#
可以在MSYS2中关闭选定路径的路径转换(参见Msys2 Porting,文件系统名称空间部分)。
您也可以通过以下方式暂时禁用它:
ffx8fchx2#
编辑:
在再次碰到这个问题后,这次是:
aws logs describe-log-groups --log-group-name-prefix ...
,我决定尝试“n”找到一个更可持续的解决方案。我发现了一个如此的职位,提供了一个根本问题的解释,以及我认为是一个更好的解决办法,即:
这适用于在Windows上从Git Bash调用时遇到此正斜杠问题的任何aws cli命令。
荣誉当然归:https://stackoverflow.com/a/56034540
看起来我的第一个答案恰好适用于
aws ssm get-parameter
,因为cli的这一部分在返回所需值方面更宽容一些,即使在提供前导空格时也是如此。* 然而 *,在进一步检查返回值时,我注意到返回参数的名称也包含前导空格,使得禁用路径转换的解决方案到目前为止是更好的选择。原始答案:
如果将来有人遇到此问题:
我抓着救命稻草随机地设法解决了它。
对我来说,诀窍是在用双引号将参数名括起来后,在第一个正斜杠前加一个空格,即:
(The GitHub的问题,导致我尝试它:https://github.com/bmatzelle/gow/issues/196)