当前位置:   article > 正文

Android执行带有通配符的shell命令_安卓 文件通配符

安卓 文件通配符

我在Android中使用getRuntime.exec()来执行一些shell命令并处理输出。其中存在一些命令,我的程序没有给出任何输出且给出了错误提示"No such file or directory",但相同的命令在命令提示符下输出了正确结果。

示例

我在查询所插入的Android USB速率与协议时,所有USB设备节点可以在/sys/bus/usb/devices下对比找到。

1、比如shell下查询USB速率信息。
在这里插入图片描述

2、通过代码Runtime.getRuntime().exec()查询

Process p = Runtime.getRuntime().exec("find ./sys/bus/usb/devices/usb*/ -name speed");
  • 1

此时运行报错:No such file or directory

3、因为shell命令中的一些符号比如*, ?, >, < , | 是通过/bin/sh -c来做解释后再传递给所调用的命令的,但对于java的Process来说,不会识别这些符号,因此我们必须强制调用/bin/sh -c来帮我们做符号解释:

String cmd = "find ./sys/bus/usb/devices/usb*/ -name speed";
String[] cmdArray = {"/bin/sh", "-c", cmd};//解决shell命令*通配符不识别问题
Process p = Runtime.getRuntime().exec(cmdArray);
  • 1
  • 2
  • 3

4、平台适配:移植到另一个MTK平台时出现了报错:java.io.IOException: Cannot run program “/bin/sh”: error=13, Permission denied…
看log是找不到/bin/sh解释器,发现系统所用的解释器路径变成/system/bin/sh了。java层也适配修改一下路径即可解决。

5、参考链接:https://www.itguest.com/post/djjgbf2b4.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/733977
推荐阅读
相关标签
  

闽ICP备14008679号