【问题标题】:How to make Pipe symbol or Grep work in an Android process runtime command?如何使管道符号或 Grep 在 Android 进程运行时命令中工作?
【发布时间】: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


【解决方案1】:

这个网站上的其他答案不是很清楚。这是解决方案。 您需要在运行时命令之前附加 "/system/bin/sh -c" 才能使 grep 正常工作。 干杯。

【讨论】:

    猜你喜欢
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多