我试图在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脚本编写函数
我搜索过但没有得到适当的解决方案 请帮忙。
答案 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"