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

时间:2011-10-16 07:24:52

标签: android bash

我编写了一个使用nice,renice和oom优先级(可选)的bash脚本,定期对应用程序进行防弹,它会检查应用程序是否在运行时将其重新定位,将其用于下次运行,但是有bug和因为我是bash脚本的新手我需要一些帮助,这是一个运行姜饼的索尼爱立信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

如果你能找到错误或给我一个好的脚本指南,我会很感激

1 个答案:

答案 0 :(得分:1)

在shell中没有 if[ 这样的陈述。每个if后都需要一个空格。

此外,在:

之后
phoneid='pidof com.android.phone'

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

请记住用以下方法检查shell语法:

/bin/sh -n myscript.sh

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

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