【问题标题】:run linux bash script on adb shell [duplicate]在 adb shell 上运行 linux bash 脚本 [重复]
【发布时间】:2014-10-09 12:40:16
【问题描述】:

我正在尝试在 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 脚本编写函数

我搜索但没有得到正确的解决方案 请帮忙。

【问题讨论】:

    标签: android linux shell adb


    【解决方案1】:

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

    hello() { echo hello world; }
    

    【讨论】:

      【解决方案2】:

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

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

      尝试调用命令为

      bash /tmp/test.sh
      

      【讨论】:

        【解决方案3】:

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

        adb shell "$hello.sh"
        

        【讨论】:

        • 什么 shell 支持这种扩展?
        猜你喜欢
        • 2017-09-24
        • 1970-01-01
        • 2021-06-27
        • 1970-01-01
        • 1970-01-01
        • 2014-10-06
        • 1970-01-01
        • 2017-03-31
        • 1970-01-01
        相关资源
        最近更新 更多