2014-10-09 2 views
3

Я пытаюсь запустить сценарий оболочки Linux на оболочке adb. Это дает ошибки! Вот и вся история:запустить сценарий linux bash на оболочке adb

Я написал простой скрипт Баш hello.sh:

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

hello 

работает как ./hello.sh производит о/р

hello world! 

Теперь я нажал файл на устройство Android с помощью

adb push hello.sh /data/folder_name 

затем выполнил следующую команду для входа в оболочку adb

adb shell 

В ADB оболочки выпустили следующие команды

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

Это то, что я получаю от ADB оболочки:

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

Что здесь происходит! Или есть другой способ записи функции для скрипта оболочки adb

Я искал, но не получил правильное решение Пожалуйста, помогите.

ответ

4

Не уверен относительно adb, но «функция» не является стандартным синтаксисом. Он доступен во многих оболочках, но стандартный способ определения функции является:

hello() { echo hello world; } 
+0

совершенен! Благодаря.:) –

0

При вызове в качестве sh, Баш входит в режим Posix и он пытается имитировать запуск старых версий ш настолько близко, насколько это возможно , в то же время соответствующий стандарту POSIX.

Зарезервированное слово function является необязательным для bash, но я думаю, что неизвестно историческим версиям sh.

Попробуйте вызвать команду в

bash /tmp/test.sh