繁体   English   中英

如何从Java调用带有标志/开关的Shell脚本

[英]How to invoke a shell script with flags/switches from java

我有一个shell脚本,例如testDB.sh,它以开关/标志的形式占用凭据(参数)。 例如,要执行此脚本,请执行以下操作

./testDB.sh -u用户名-p密码。

为了从Java调用它,我遵循传统方法。

Runtime.getRuntime().exec(new String[] {"bash","/<path to test script>/testDB.sh","<username>","<password>"});

上面似乎没有帮助的原因:(

我想知道如何通过以Java中标志/开关的形式传递参数来调用此脚本。 我如何通过-u和-v开关? 任何帮助,将不胜感激

您还需要传递标志:

new ProcessBuilder("<script path>/testDB.sh",
  "-u", username,
  "-p", password
);

我强烈建议不要使用其他任何解决方案,因为它们很脆弱,并且在脚本的任何参数中都留有空格时,它们会突然失败。

如果密码和用户名都存储在变量中,我建议您尝试:

Runtime.getRuntime().exec("<script path>/testDB.sh -u " + username + " -p " + password);

这不是您目前拥有的扩展。 您目前有...

Runtime.getRuntime().exec(new String[] {"bash","/<path to test script>/testDB.sh","<username>","<password>"});

更新到

String command = String.format( "/<path to test script>/testDB.sh -u %s -p %s", username, password );
String[] cmdAndArgs = { "/bin/bash", "-c", command };

Runtime.getRuntime().exec( cmdAndArgs );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM