有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    如果可以更改输入字符串,请使用enter而不是“\n”序列

    /myProgram  prvKey '  -BEGIN RSA PRIVATE KEY  -
    xxx
      -END RSA PRIVATE KEY  -
    '
    

    那么java参数将包含新行,而不是字符串“\n”