在adb shell上运行linux bash脚本

时间:2014-10-09 12:40:16

标签: android linux shell adb

我试图在adb shell上运行linux shell脚本。它给出了错误! 以下是整个故事:

我写了一个简单的bash脚本hello.sh:

#!/bin/bash
function hello
{
    echo "hello world!"
}

hello

以./hello.sh运行它会产生o / p

hello world!

现在我使用

将文件推送到Android设备
adb push hello.sh /data/folder_name

然后运行以下命令进入adb shell

adb shell

在adb shell中触发了以下命令

cd /data/folder_name
chmod 755 hello.sh
sh hello.sh

这是adb shell上的内容:

# sh hello.sh
sh hello.sh
function: not found
hello world!
hello: not found
#

这里发生了什么! 或者是否有一些不同的方式为adb shell脚本编写函数

我搜索过但没有得到适当的解决方案 请帮忙。

3 个答案:

答案 0 :(得分:4)

不确定adb,但'function'不是标准语法。它在许多shell中都可用,但定义函数的标准方法是:

hello() { echo hello world; }

答案 1 :(得分:0)

当调用sh时,bash进入posix模式并尝试尽可能接近地模仿sh的历史版本的启动行为,同时也符合POSIX标准。

保留字function对于bash是可选的,但我认为sh的历史版本不知道。

尝试以

的形式调用命令
bash /tmp/test.sh

答案 2 :(得分:0)

您无需将脚本推送到手机上-只需像这样在外壳本身中将其扩展,就可以节省时间:

adb shell "$hello.sh"