bash如何从java程序中的命令行参数中获取包含“\n”的字符串?
我正在尝试从命令行获取ssh私钥数据
./myProgram --prvKey '-----BEGIN RSA PRIVATE KEY-----\nxxx\n-----END RSA PRIVATE KEY-----\n'
在我的Git类中,我使用的关键数据如下:
protected JSch createDefaultJSch(FS fs) throws JSchException {
String prvKeyData = Main.getPrvKeyData();
System.out.println(prvKeyData);
JSch jSch = super.createDefaultJSch(fs);
jSch.addIdentity("monitoring-configs", prvKeyData.getBytes(), null, "passphrase".getBytes());
return jSch;
}
但这会失败,并显示一条无效的ssh密钥错误消息
我检查了它在直接将字符串放入代码时是否工作良好
我还检查了System.out.println
结果是否与我给出的输入完全相同(包含\n
)
我猜bash使用反斜杠做了一些事情,因此在我的Java程序中,\n
没有被正确理解
如何调试和解决此问题
# 1 楼答案
如果可以更改输入字符串,请使用enter而不是“\n”序列
那么java参数将包含新行,而不是字符串“\n”