android - 我如何摆脱错误(我的脚本有什么问题)

标签 android bash

我写了一个 bash 脚本,它使用 nice、renice 和 oom 优先级(可选),定期对应用程序进行防弹,它检查应用程序是否运行 renices 它,下次运行时 nices 它,但是有错误和因为我是 bash 脚本的新手,所以我需要一些帮助,这是针对运行 Gingerbread 的索尼爱立信 xperia x10,但除了应用程序名称之外,所有命令都是标准的 busybox 命令

#!/system/bin/sh
#prioritizer script version 2
while true
do
    phoneid='pidof com.android.phone';
    if[ $phoneid ]
    then
    renice -17 $phoneid ;
        #/system/xbin/echo "-17" > /proc/$phoneid/oom_adj;

    else
        nice --17 'com.android.phone' ;

    fi
    hid='pidof com.sonyericsson.home';
    if[ $hid ]
    then
        renice -18 $hid ;
        #/system/xbin/echo "-18" > /proc/$hid/oom_adj;

    else
        nice --17 'com.sonyericsson.home' ;
    fi
    supid='pidof com.noshufou.android.su';
    if[ $supid ]
    then
        renice -17 $supid ;
        #/system/xbin/echo "-17" > /proc/$supid/oom_adj;
    else
        nice --17 'com.noshufou.android.su';
    fi
    renice -17  'pidof com.android.mms'
    renice -14 'pidof com.sonyericsson.music'
    renice -17 'pidof android.process.media'
    renice -16 'pidof mediaserver'
    renice 5 'pidof com.google.process.gapps'
    renice 5 'pidof com.Google.android.apps.uploader '
    sleep 1000

done
exit 0

如果您能找到错误或给我一个好的脚本指南,我将不胜感激

最佳答案

在 shell 中没有像 if[ 这样的语句。每个 if 之后都需要一个空格。

另外,之后:

phoneid='pidof com.android.phone'

您的变量文本中有:“pidof com.android.phone”,而不是该命令的输出。您需要使用 `command param ...` 或(最好)$(command param ...) 语法。

记得检查你的 shell 语法:

/bin/sh -n myscript.sh

上面的命令(在您的 PC 上运行)不会尝试运行脚本,只是检查语法。

此外,您有很多不需要的分号,但这不会使您的脚本失败。

关于android - 我如何摆脱错误(我的脚本有什么问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7782935/

相关文章:

android - Firebase Dynamic Link 的短链接数量有限制吗?

android - 使用 sbt android-plugin 的构建时间长

bash - awk 和 md5 : replace a column

json - 如何使用 jq 将此字符串转换为 JSON?

bash - `echo $?` 在 bash 中是什么意思?

mysql - json 格式的输出数据库大小(来自 Centos7 的 Mariadb)

java - Google Play 64 位要求

android - 在我的应用程序中获取不包含 webview 的用户代理

java - Activity 之间的值(value)转移

c - 运行程序的多个输入