Soshok
7.5.2009, 14:36
Привет.
Кто может мне помочь научится писать скрипты.
Может кто напишет мануал (хотя б в общих чертах)?
Оч прошу...
Зарание спасибо!
Chacha_Ivanov
7.5.2009, 16:53
Изучай на здоровье
Soshok
7.5.2009, 21:18
Chacha_Ivanov,
чего так много???
Добавлено позже (8.5.2009, 1:26):Chacha_Ivanov,
знаешь, я так глянул, оч много и сложно.
А попроще нету?
SergGG
8.5.2009, 8:57
Цитата(Soshok @ 8.5.2009, 0:18)

Chacha_Ivanov,
чего так много???
Добавлено позже (8.5.2009, 1:26):Chacha_Ivanov,
знаешь, я так глянул, оч много и сложно.
А попроще нету?

Полный мануалНачинайте читать с фразы "Работа с скриптами автозапуска". Остальное в принципе тоже можно, но скорее для общего развития, все-же платформы у А1200 и У9 сильно отличаются.
А потом здесь прочитайте
Полный мануал
SanchoNT
11.5.2009, 0:19
может кто-нибудь знает какой командой или каким скриптом можно развернуть из фона свёрнутое ява приложение?
Virgilij
16.5.2009, 22:39
SanchoNT, реально, глянь в тему
Полезные скрипты для Z6 и V8 там есть скрипт, называется JavaMan, почитай о нём, может сможешь переложить на свою платформу (она у нас в принципе одинаковая)...
RipZ
21.5.2009, 8:18
Цитата(SergGG @ 21.5.2009, 11:43)

Я так думаю, что автор темы будет бесконечно счастлив, елси Вы предоставите есму мануал по скриптам, содержащий больше полезной информации и написанный доступным языком для начинающего.
Заодно и неплохо выделитесь как настоящий ковырятель.
гугл отменили?
http://www.linuxsoft.ru/info/lib/lib/HowTo/bash/для начала это. если ненравится - снова в гугл.
Chacha_Ivanov
21.5.2009, 12:12
Цитата(SanchoNT @ 11.5.2009, 4:19)
может кто-нибудь знает какой командой или каким скриптом можно развернуть из фона свёрнутое ява приложение?
Вот
Ant-ON написал для em30/e8 программульку небольшую. Проверь, может заработает. Работает только в консоли, поэтому для нее нужно написать небольшой скрипт, который будет ей отдавать PID нужного процесса (ява, браузер, без разницы короче), и выводить его на экран. То есть получится мини таск-менеджер)
SanchoNT
21.5.2009, 13:03
скачал, закинул на карту памяти, законнектился через PuTTY, пишу там /mmc/mmca1/zTaskManMini
и вот что получаю в ответ /mmc/mmca1/zTaskManMini: error while loading shared libraries: libvkm.so: cannot open shared object file: No such file or directory
на сколько я понимаю нужна либа libvkm.so
кто-нибудь может её выложить ? и куда её потом закинуть, в папку с zTaskManMini ?
SanchoNT
21.5.2009, 13:49
ну вобщем ничего не помогает, потом открыл zTaskManMini в hex редакторе, нашёл то место где написано про этот libvkm.so и вбил туда нулей, сохранил и попытался запустить его в телефоне и о чудо ! оно заработало !! запустил игру, набрал ps чтобы посмотреть pid, вбиваю /mmc/mmca1/zTaskManMiniE 522
и у меня разворачивается игра ! :D сейчас буду тестировать дальше, тут как раз ещё скрипт был куда это можно попробовать прикрутить, вобщем это просто божественно !
Такой крутой способ должен подойти для всех MOTOMAGX телефонов!
Просто возможно придется забить с десяток ненужных либ
Programmer-tm(Мотофан.)
12.6.2011, 11:46
А по скрипту кто нить сможет помочь?
Нужна команда, которая удалит первый символ из названия файла.
Название файла пишется в переменную VINF (VINF=1234.567)
Такая конструкция: ${VINF:1} работать отказалась.
Вопрос решён.
VINRARUS
17.6.2011, 17:56
Ура! В теме появилася шапочка.
В даной теме помогаем друг другу в написании шелл скриптов, и дружно решаем проблемы связанные с ними 
Вот мои рукописные мануалы для совсем новичков:
Основы. Синтаксис, кавычки, переменные, условные операторы Розширенная инфа о ifПодробный мануал с примерами по ВСЕМ функциям SHПортативная версия еще одного мануалаКниги в формате Djvu Примеры работы с текстом через sed и
мануал PRO и
мануал NUBПримеры работы с текстом через awk и
мануалОбрезка текста внутри переменных - чорт ногу сломит =] О логике шаблонов.Где быстро найти инфу?Тут вводите в строчку поиска манов любую утилиту, например echo, и 95% вероятности что получите инфу по всем функциям и ключамВот инфа по НЕКОТОРЫМ утилитам, также можна пользоваться поиском1. Не во всех UNIX\LINUX системах можно сразу в терминале вводить команды утилит.
Например в MOTOMAGX часто перед командой
утилиты нужно вводить "
busybox" (например busybox free) хотя это и решено на некоторых модах.
А в некоторых выкидышах типа Android они и вовсе отсутствуют как и сам busybox, но есть возможность добавить его самому.
2. Не всегда утилиты поддерживают то что написано в манах к ним, иногда функционал меняется от версии к версии.
3. Также нужно знать что код от bash иногда может не работать корректно на shell (sh), хотя и очень редко.
Это из за того что древним программистам делать было нечего, когда не было еще интернета, и они понапридумывали
кучу модификаций.
Хорошо хоть код под чистый shell подойдет ко всем им, из за чего он считается
эталоном.
А не bash как считают юные линуксойды.[close]
DaNTaLiaN™
17.6.2011, 19:42
Пытался написать по подобию скрипт для zpk архива и что-то у меня не получается... в чем ошибка?
Цитата
#!/bin/sh
mypath=${0%/*}
showQ "ver2" "Установить" 1
if [ $? != 0 ]
then
mkdir /mmc/movinand1/mpkgbox
cp $mypath/mpkgbox/* /mmc/movinand1/mpkgbox
fi
else
if [ $? != 0 ]
then
showQ "ver2" "Удалить" 1
rm -rf /ezxlocal/zmodstuff/zpk/ver2
rm -rf /mmc/movinand1/mpkgbox
fi
;;
*)
VINRARUS, время в любом случае не будет потрачено в пустую
VINRARUS
17.6.2011, 20:01
DaNTaLiaN™, есть серьезные но простые ошыбки, вот вроде правильно.
Код
#!/bin/sh
mypath=${0%/*}
showQ "ver2" "Установить?" 1
if [ $? != 0 ]
then
mkdir /mmc/movinand1/mpkgbox
cp $mypath/mpkgbox/* /mmc/movinand1/mpkgbox
else
showQ "ver2" "Удалить?" 1
if [ $? != 0 ]
then
rm -rf /ezxlocal/zmodstuff/zpk/ver2
rm -rf /mmc/movinand1/mpkgbox
fi
fi
Количество if всегда должно соответствовать количеству fi
Знач завтра займусь началом мануала.
VINRARUS
18.6.2011, 18:40

Знач начну с основ.
Shell скрипт (SH) - это обычный текстовый файлик с кодировкой UTF в котором в основном английскими буквами и специальными символами написаны команды (хотя например какие то параметры могут содержать кириллицу и иероглифы), которые потом может выполнять система, а точнее программка по пути /bin/sh (у меня это символическая ссылка на /bin/busybox)
Shell скрипт выполняет те самые команды что и терминал или телнет, и синтаксис почти однаковый, просто в терминале есть возможность работать в режиме реального времени и задавать команды напряму во время работы некоторых программ, а в скриптах все параметры задаются заранее, и изменять их во время работы скрипта нельзя потому что Shell скрипты не имеют графической оболочки, но для этой цели были созданы шоумодули для линукс-моторов!
Для запуска скрипта есть 2 способа:
1) просто прописать путь к скрипту
Код
/mmc/mmca1/skriptik.sh
и при такой команде скрипт выполнится при 2х условиях:
1.Права файла-скрипта должны разрешать запуск исполняемого файла (например 775 или 777)
2.В начале скрипта должна присутствовать точно такая первая строчка:
Код
#!/bin/sh
Хотя из терминала можна запускать и без этой строчки, но zLauncher например не понимает чем его запустить, поэтому лучше ее прописать.
2) перед путьом к скрипту прописать путь к программке которая будет исполнять его, то есть /bin/sh
Код
/bin/sh /mmc/mmca1/skriptik.sh
И в таком случае не нужны ни права на запуск, ни #!/bin/sh, хотя они и не помешают
По поводу расширения в названии файла например "skriptik.sh":
Расширение для линукс-системы не важно, например если попытаться запустить скрипт с названием "skriptik.jpg", то никаких проблем не будет, так само можна назвать вообще без расширения "skriptik", но расширение важно только для ассоциаций, например в стандартном ФМ, ну и для визуального ориентирования.
Вот основные правила синтаксиса: - В командах скрипта важен каждый символ и даже пробел, иногда из за невнимательности получаются большие проблемы с работой скрипта.
- И регистр букв тоже важен, например команды "sleep" и "SLEEP" являются совершенно разными командами.
- Если в начале строчки стоит решётка "#", то вся эта строчка не воспринимается системой, но если решетка входит в область выделенную кавычками, то она воспринимается как текст. В основном используется для подсказок или визуального разделителя. Также решётка может стоять сразу после команды, и опять же часть строчки после нее не воспринимается системой
-
Есть 3 вида кавычек: " ` ', и нельзя открыть одной кавычкой, а закрыть другой, потому что так еще одно поле откроется:
Код
echo 'hot "dog '$FS'" otak"`free`"'
` - заключенные в них слова сразу выполняются системой как команда, и в место этого появляется текст который продиктовала выполняемая команда.
Код
`echo 58945`
= Код
58945
" - используется для объединения текста который может содержать как пробелы, так и много строк, и текст заключенный в них воспринимается так одно слово, используется для переменных и для команд запуска например шоумодулей, переменные заменяются своим значением ,а если где то в выделенном тексте есть команда выделенная такими кавычками ``, то нужно читать выше описание.
Код
"kupa `echo 58945`"
= Код
kupa 58945
' - эти кавычки действуют наподобе как `, только наоборот, то есть если в них заключены или переменные, или любые системные символы, или даже команда взята в ``, то система будет воспринимать выделенную область как простой текст, не обращая внимание на содержание.
Код
' "kupa `echo 58945`" '
= Код
"kupa `echo 58945`"
-
$ - это символ переменной, а переменная - это как бы маленькая закладка на ранее заданное значение. Задается с новой строки так:
Код
VoDoChKa="Пить вредно!"
И при упоминании далее переменной вместо нее вставляется заданный текст:
Код
Совет с того света:$VoDoChKa
= Код
Совет с того света:Пить вредно!
Иногда бывает что после переменной сразу нужно написать текст без пробела и других символов, и поэтому чтобы переменная работала, можна ее выделить таким способом:
Код
${VoDoChKa}наверно
= Код
Пить вредно!наверно
-
if - условный оператор, который действует по такому принципу: если чото, то это, или если чото, то это, или же это, конец.
Одна из самых полезных функций скриптов!
Вот пример который ориентируется на значение переменной $GRIB:
Код
if [ "$GRIB" = "1" ]
then
echo "1 gribok"
elif [ "$GRIB" = "2" ]
then
echo "2 gribka"
elif [ "$GRIB" = "3" ]
then
echo "3 gribka"
else
echo "nema gribka"
fi
Или еще такой вариант:
Код
if [ "$GRIB" = "1" ]
then
echo "1 gribok"
else
echo "nema gribka"
fi
И количество if всегда должно соответствовать количеству fi
Пока все, потом еще буду писать.
Programmer-tm(Мотофан.)
19.6.2011, 11:24
Цитата(VINRARUS @ 19.6.2011, 14:07)

Будет кому полезен мануал такого плана?

Конечно. Сам собираюсь писать на shell уже пару простеньких программок собрал...
Еще бы для новичка не плохо написать какие есть выводы Show модулей и как их задействовать.
igoripp
19.6.2011, 12:39
#!/bin/sh
showQ "Очистити базу?" "По завершенні процесу телефон буде перезавантежено і база даних автоматично обновиться!" 1
[ $? -ne 1 ] && exit
rm /mmc/mmca1/.sd_dbmss
rm /mmc/mmca1/.thumbindex
rm /mmc/mmca1/.thumbinal
rm /mmc/mmca1/.udstate
rm /mmc/movinand1/.udstate
rm /mmc/movinand1/.thumbindex
rm /mmc/movinand1/.sd_dbmss
rm /mmc/movinand1/.thumbina
nice -n -20 mot_reboot
Почему у меня такое не работает? Ничего не происходит.
VINRARUS
19.6.2011, 12:45
Код
#!/bin/sh
showQ "Очистити базу?" "По завершенні процесу телефон буде перезавантежено і база даних автоматично обновиться!" 1
if [ $? -ne 1 ]
then
exit
fi
rm /mmc/mmca1/.sd_dbmss
rm /mmc/mmca1/.thumbindex
rm /mmc/mmca1/.thumbinal
rm /mmc/mmca1/.udstate
rm /mmc/movinand1/.udstate
rm /mmc/movinand1/.thumbindex
rm /mmc/movinand1/.sd_dbmss
rm /mmc/movinand1/.thumbina
nice -n -20 mot_reboot
Osta
19.6.2011, 17:08
Цитата(VINRARUS @ Сегодня, 14:07)

Будет кому полезен мануал такого плана?
мне тоже нужно, хотя и не для телефона, пиши обязательно!
интересуют ещё такие строки что в них описывается
until [ `cat /tmp/resolv.conf | grep -c nameserver` -gt 0 ]
VINRARUS
27.6.2011, 15:52
Продолжу с команд для
if
Дальше описаны какие еще опции могут быть заключены в квадратные скобки.
Рассмотрим уже знакомую строчку:
Код
if [ "$GRIB" = "1" ]
С опцией "=" (идентичные значения по обе стороны "=") мы уже познакомились, она обрабатывает равные ли заданные значения, и не важно буквы там или цифры, так сказать проверяет идентичны ли 2 набора символов.
Существует способ легко изменить опцию на противоположную, поставив перед ней знак "!" (звучит как НЕ)
Например строчка:
Код
if [ "$GRIB" != "1" ]
уже проверяет наоборот разные ли значения по обе стороны знаков "!=".
Ну это незаменимо для использования с "elif", ну и для "if" тоже нужно (хотя для "if" для этой цели можно использовать "else").
Только нужно обязательно запомнить что символ "!" с символом "=" ВСЕГДА пишется слитно без пробелов между ими, а вот с другими опциями через ОДИН ПРОБЕЛ
Вот список всех опций:Сравнение целых чисел:
-gt больше чем
-lt меньше чем
-ge больше чем либо равно
-le меньше чем либо равно
-eq равно
-ne не равно
Сравнение строк:
-z проверка на наличие пустой строки
-n проверка на наличие строки-значения
= равенство
!= неравенство
str проверка на наличие строки,состоящей из нулей
Логические операции:
-a И
-o ИЛИ
! НЕ
Проверка файлов:
-f установка факта существования файла и его регулярности
-s проверка,не является-ли файл пустым
-r проверка возможности считывания файла
-w проверка возможности записи файла
-x проверка исполняемости файла
-d проверка,является-ли файл каталогом
-h проверка,является-ли файл ссылкой
-c проверка,является-ли файл байт-ориентированным устройством
-d проверка,является-ли файл блок-ориентированным устройством
Примеры:
Код
if [ -f /mmc/mmca1/muzica/trecklist.txt ]
then
echo YES
fi
Проверяет существует ли файл по этому пути, если нет или если это каталог, то ничего не делать.
Нужно заметить что если в пути к файлу\папке есть пробелы, то нужно путь брать в кавычки, иначе скрипт перестанет работать на этом условии. Код
if [ 2 -lt 4 -a 8 != GR ]
then
echo URAA
fi
Проверяет меньше ли "2" за "4", и не идентичные ли значения "8" и "GR", и в случае если оба условия верны выполняется команда "echo URAA" (которая работает только в телнете или терминале и выводит слово "URAA")
Код
if [ ! -z "$GG" ]
then
echo aga
fi
Проверяет пустая ли переменная "$GG", если нет то выполняет "echo aga".
Также для этого действия можно написать такое условие:
Код
if [ "$GG" != "" ]
then
echo aga
fi
И обязательно в условиях переменную нужно брать в двойные скобки (как и все слова с пробелами), потому что если в переменной будет пробел, а условие очень чувствительно к пробелам, то скрипт потерпит крах при выполнении!
Хотя если точно известно что значение переменной без пробелов и что она не пустая, то можно и без кавычек (хотя лучше перестраховаться) Ну и нужно быть внимательным чтобы после "[" и перед "]" ОБЯЗАТЕЛЬНО стояли пробелы, иначе если вместо пробелов будет стоять другой символ, то скрипт на этом условии завершится с ошибкой!