如何在我的Android中运行BASH脚本?

18 linux bash android fedora bash4

我的相同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
Run Code Online (Sandbox Code Playgroud)

跟进:

这是我的脚本现在有效:

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

or

#!/bin/bash
echo "hello wassup, run me using 'sh ./test.sh'";
Run Code Online (Sandbox Code Playgroud)

小智 21

在Android的壳位于/system/bin/sh/bin/sh喜欢它是在大多数Unix类系统.所以,即使你改变#!/bin/bash#!/bin/sh它仍然无法正常工作.你必须使用#!/system/bin/sh

Android不是GNU/Linux发行版,所以你不能指望在GNU/Linux上运行的所有脚本也可以在Android上运行.

  • 此信息不正确.我只是将脚本修改为#!/ bin/sh并且它可以工作. (2认同)

ASt*_*ten 10

用脚本调用解释器可能会有效吗?

$ bash ./test.sh
Run Code Online (Sandbox Code Playgroud)

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

UPD

$ sh ./test.sh
Run Code Online (Sandbox Code Playgroud)


Wes*_*ser 6

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

我强烈建议您使用Android SDK编写应用程序,以执行您要完成的任何操作.