[英]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.