как мне избавиться от ошибок (что не так с моим скриптом)

#android #bash

#Android #bash

Вопрос:

я написал скрипт bash, который использует nice, renice и zombie priority (необязательно) для периодической проверки приложений, он проверяет, работает ли приложение, обновляет ли оно что-то еще, отключает его при следующем запуске, но есть ошибки, и, поскольку я новичок в написании сценариев bash, мне нужна помощь, этодля sony ericsson xperia x10 работает gingerbread, но, кроме названий приложений, все команды являются стандартными командами 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. Код намного легче читать с правильным отступом. Я это исправил.

Ответ №1:

В оболочке нет такого утверждения, как if[ . Вам нужен пробел после каждого if .

Кроме того, после:

 phoneid='pidof com.android.phone'
  

в вашей переменной text: «pidof com.android.phone» вместо вывода этой команды. Вам нужно использовать `command param ...` синтаксис or (желательно) $(command param ...) .

Не забудьте проверить синтаксис оболочки с помощью:

 /bin/sh -n myscript.sh
  

Приведенная выше команда (запуск на вашем ПК) не будет пытаться запустить скрипт, просто проверьте синтаксис.

Кроме того, у вас много ненужных точек с запятой, но это не приведет к сбою вашего скрипта.