我有一个用于AWS SSM CLI命令的字符串参数,由于以add
开头,因此它看起来像文件的路径。 static
。
当我在git bash上运行命令时,无论我如何尝试对其进行转义,它都会尝试查找文件:
Positive p, Positive v
public class Positive {
public static void main(String[] args) {
Positive p = new Positive(5);
Positive v = new Positive(17);
int result = add(p,v);
System.out.println(result);
}
private int n;
public Positive(int n) {
this.n = n;
}
public static int add(Positive p, Positive v)
{
return p.get() + v.get();
}
public int get() {
return n;
}
}
/
/path/to/my/param
即使尝试了反跳,也出现了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 (_).
,所以这也可能是aws cli处理输入的方式。
有什么办法逃脱它吗?
答案 0 :(得分:1)
可以在MSYS2中为选定路径关闭路径转换(请参见Msys2 Porting,“文件系统名称空间”部分)。
您还可以通过以下方式暂时将其禁用:
MSYS2_ARG_CONV_EXCL="/aws" aws ssm get-parameter --name '/aws/path/to/my/param'
答案 1 :(得分:1)
以防将来有人遇到此问题:
我抓着稻草随机解决了。
我的诀窍是在用双引号将参数名称括起来后的第一个正斜杠之前放一个空格,即:
aws ssm get-parameter --name " /path/to/my/param"
(促使我尝试的 GitHub 问题:https://github.com/bmatzelle/gow/issues/196)