gpt4 book ai didi

java - 在 JAVA 中运行 Linux 命令的转义序列无效

转载 作者:太空宇宙 更新时间:2023-11-04 03:55:39 25 4
gpt4 key购买 nike

我需要使用 BufferedReader 在 Java 中执行此 Linux 命令:

grep 'auth\.' /var/lib/iscsi/nodes/10.1.1.36/*/default 

我试图执行的是:

String inputThis = "";
String executeThis = "grep" + " " + "'auth\\.'" + " "
+ "/var/lib/iscsi/nodes/10.1.1.36" + "/*/default";

Process process = ServerHelper.callProcessWithInput(executeThis, inputThis);

BufferedReader stdOutput = new BufferedReader(
new InputStreamReader(process.getInputStream()));

try {
logger.debug("stdOutput for editing:");

String s = null;
while ((s = stdOutput.readLine()) != null) {
logger.info("####################" + s);
}

} catch (IOException e) {
logger.fatal(e);
}

没有错误警告:无效的转义序列(有效的是\b\t\n\f\r\"\'\\)

但它工作不正确。我在 Linux 终端中运行该命令,它工作正常并返回了所需的结果,没有错误消息。但是当我执行上面的代码时,结果为空。如果您检查错误消息,它会显示:

####################grep: /var/lib/iscsi/nodes/10.1.1.36/*/default: No such file or directory

知道如何修改字符串吗?

更新:弄清楚了!我们不能在字符串中使用“*”,java无法检测到它。只需

executeThis = "ls" + " " + "/var/lib/iscsi/nodes/"+ 10.1.1.36;

找到*是什么,并且

executeThis = "cat" + " " + "/var/lib/iscsi/nodes/" + 10.1.1.36 + "/" + myString + "/default";

最佳答案

试试这个:

exec(字符串[] cmdarray)在单独的进程中执行指定的命令和参数。

process.exec("new String[]{"grep", "'auth\.'", "/var/lib/iscsi/nodes/10.1.1.36/*/default"});

关于java - 在 JAVA 中运行 Linux 命令的转义序列无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24767786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com