【发布时间】:2017-04-14 09:09:10
【问题描述】:
我正在尝试执行以下命令;
String cmd = "/system/bin/netstat -"+firstString+" | grep http";
Process process = Runtime.getRuntime().exec(cmd);
Log.d("1:CMD VALUE", cmd);
日志结果为1:CMD VALUE: /system/bin/netstat -a | grep http
但是,输出没有针对“http”参数进行过滤。常规的“/system/bin/netstat -a”结果也是我通过“/system/bin/netstat -a | grep http`”命令得到的结果。为什么是这样?这是因为管道符号还是 grep 命令? 请帮忙。 谢谢。
【问题讨论】:
-
如果
grep是一个二进制可执行文件(一个程序),那么由于Android不是完整的linux,所以它可能根本不存在于Android系统中。 -
@iagreen:我在发布问题之前尝试了字符串数组,但它仍然提供相同的输出,即 grep 不起作用或管道不起作用?! .我的 cmd 数组是 {"/system/bin/netstat", "-"+firstString, " | grep http"} - 这看起来正确吗?弗拉德:如何检查它是否不存在?
-
没有。关于该链接的重要部分是“|”
exec不支持,但 shell 支持。您需要调用sh,然后让sh运行您的命令。 -
你能举个例子吗?我在命令中添加了“bash -c”,并收到消息说我需要 root 权限才能调用 bash。
标签: android linux bash pipe runtime