20

我同样的 BASH 脚本在 Fedora/CentOS 中运行。

但我正在测试一个Android eee pad transformer在此处输入图像描述

我有终端访问权限,我写了一个小测试脚本。但它不起作用,我该如何解决它?我究竟做错了什么?

/data/data/berserker.android.apps.sshdroid/home $ cat test.sh 
#!/bin/bash
var=`ifconfig -a`;
echo $var;

/data/data/berserker.android.apps.sshdroid/home $ chmod +x test.sh 
/data/data/berserker.android.apps.sshdroid/home $ ./test.sh 
sh: ./test.sh: not found
/data/data/berserker.android.apps.sshdroid/home $ uname -a
Linux localhost 2.6.36.3-00004-g069b8b5 #1 SMP PREEMPT Wed May 11 22:14:22 CST 2011 armv7l GNU/Linux

/data/data/berserker.android.apps.sshdroid/home $ bash ./test.sh 
sh: bash: Permission denied

/data/data/berserker.android.apps.sshdroid/home $ ls -l /bin/bash
ls: /bin/bash: No such file or directory

/data/data/berserker.android.apps.sshdroid/home $ find / -name "bash"
find: /config: Permission denied
lots more.......
find: /proc/595/task/598/fd: Permission denied
......
find: /data: Permission denied
find: /root: Permission denied

跟进:

这是我现在有效的脚本:

#!/bin/sh
echo "hello wassup, run me simply as './test.sh'";

or

#!/bin/bash
echo "hello wassup, run me using 'sh ./test.sh'";
4

5 回答 5

28

在 Android 中,shell 的位置与/system/bin/sh大多数/bin/sh类 Unix 系统不同。因此,即使您更改#!/bin/bash#!/bin/sh它仍然无法正常工作。你必须使用#!/system/bin/sh

Android 不是 GNU/Linux 发行版,因此您不能期望在 GNU/Linux 上运行的所有脚本也可以在 Android 上运行。

于 2011-11-11T14:36:24.997 回答
11

使用脚本调用解释器时可能会起作用吗?

$ bash ./test.sh

我看到,虽然它是由指定#!/bin/bash的错误发布的sh - 可能是它做错了。

UPD

$ sh ./test.sh
于 2011-11-11T13:30:07.707 回答
5

大多数 Android 设备都没有安装 bash 解释器。如果你真的需要在 Linux 和 Android 上运行脚本,你可以尝试使用BusyBox,但这需要你的设备生根(并且可能会使你的保修失效)。尽管如此,我不知道该ifconfig实用程序是否包含在 BusyBox 中。

我强烈建议使用 Android SDK 编写一个应用程序来完成你想要完成的任何事情。

于 2011-11-11T14:25:06.963 回答
2

如前所述,Android 操作系统(直到并包括 4.0)不包括 BASH 解释器(只是 shell)。虽然 BusyBox 是一个很棒的工具,但我相信它只是一个单一的可执行文件,它结合了通用 UNIX 实用程序的精简功能版本,但实际上并不包含 BASH 解释器。

对于 BASH 解释器的 Android 编译版本,请参阅此论坛帖子:http: //forum.xda-developers.com/showthread.php?t=537827

于 2012-01-03T19:32:45.740 回答
1

您可以安装Busybox,它为您提供了许多实用程序,例如 awk、file 等……和Terminal Emulator

  1. 创建一个shell文件#!/system/bin/sh作为第一行(shebang)
  2. 现在将完成的脚本放在/system/xbinor下/system/bin并从终端模拟器运行它

信息摘自这篇文章:如何在 ANDROID 设备上运行 shell 脚本

于 2016-04-19T10:44:36.517 回答