MotoFan.Ru - все для моторола > Гаджеты от Motorola > Motorola на Linux

Написание скриптов #!/bin/sh for UNIX Полная версия
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

 av Soshok

 7.5.2009, 14:36

Привет.
Кто может мне помочь научится писать скрипты.
Может кто напишет мануал (хотя б в общих чертах)?
Оч прошу...
Зарание спасибо!

 av Chacha_Ivanov

 7.5.2009, 16:53

Изучай на здоровье biggrin.gif

 av Soshok

 7.5.2009, 21:18

Chacha_Ivanov,
чего так много??? laugh.gif unsure.gif

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

 av SergGG

 8.5.2009, 8:57

Цитата(Soshok @ 8.5.2009, 0:18) *

Chacha_Ivanov,
чего так много??? laugh.gif unsure.gif

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

Полный мануал

Начинайте читать с фразы "Работа с скриптами автозапуска". Остальное в принципе тоже можно, но скорее для общего развития, все-же платформы у А1200 и У9 сильно отличаются.

А потом здесь прочитайте Полный мануал

 av SanchoNT

 11.5.2009, 0:19

может кто-нибудь знает какой командой или каким скриптом можно развернуть из фона свёрнутое ява приложение?

 av Virgilij

 16.5.2009, 22:39

SanchoNT, реально, глянь в тему Полезные скрипты для Z6 и V8 там есть скрипт, называется JavaMan, почитай о нём, может сможешь переложить на свою платформу (она у нас в принципе одинаковая)...

 av RipZ

 21.5.2009, 8:18

Цитата(SergGG @ 21.5.2009, 11:43) *

Я так думаю, что автор темы будет бесконечно счастлив, елси Вы предоставите есму мануал по скриптам, содержащий больше полезной информации и написанный доступным языком для начинающего.
Заодно и неплохо выделитесь как настоящий ковырятель.


гугл отменили?

http://www.linuxsoft.ru/info/lib/lib/HowTo/bash/
для начала это. если ненравится - снова в гугл.

 av Chacha_Ivanov

 21.5.2009, 12:12

Цитата(SanchoNT @ 11.5.2009, 4:19)

может кто-нибудь знает какой командой или каким скриптом можно развернуть из фона свёрнутое ява приложение?
*


Вот Ant-ON написал для em30/e8 программульку небольшую. Проверь, может заработает. Работает только в консоли, поэтому для нее нужно написать небольшой скрипт, который будет ей отдавать PID нужного процесса (ява, браузер, без разницы короче), и выводить его на экран. То есть получится мини таск-менеджер)

 av 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 ?

 av SanchoNT

 21.5.2009, 13:49

ну вобщем ничего не помогает, потом открыл zTaskManMini в hex редакторе, нашёл то место где написано про этот libvkm.so и вбил туда нулей, сохранил и попытался запустить его в телефоне и о чудо ! оно заработало !! запустил игру, набрал ps чтобы посмотреть pid, вбиваю /mmc/mmca1/zTaskManMiniE 522
и у меня разворачивается игра ! :D сейчас буду тестировать дальше, тут как раз ещё скрипт был куда это можно попробовать прикрутить, вобщем это просто божественно !

Такой крутой способ должен подойти для всех MOTOMAGX телефонов!
Просто возможно придется забить с десяток ненужных либ

 no av Programmer-tm(Мотофан.)

 12.6.2011, 11:46

А по скрипту кто нить сможет помочь?
Нужна команда, которая удалит первый символ из названия файла.

Название файла пишется в переменную VINF (VINF=1234.567)
Такая конструкция: ${VINF:1} работать отказалась.

Вопрос решён.

 av VINRARUS

 17.6.2011, 17:56

Ура! В теме появилася шапочка. watsup.gif
В даной теме помогаем друг другу в написании шелл скриптов, и дружно решаем проблемы связанные с ними smile.gif

Вот мои рукописные мануалы для совсем новичков:
Основы. Синтаксис, кавычки, переменные, условные операторы
Розширенная инфа о if

Мануал основ -_- Эх интернет, интернет, че ж ты такой склерозный?
Подробный мануал с примерами по ВСЕМ функциям SH
Портативная версия еще одного мануала
Книги в формате Djvu

Примеры работы с текстом через sed и мануал PRO и мануал NUB
Примеры работы с текстом через awk и мануал
Обрезка текста внутри переменных - чорт ногу сломит =] О логике шаблонов.

Где быстро найти инфу?
Тут вводите в строчку поиска манов любую утилиту, например echo, и 95% вероятности что получите инфу по всем функциям и ключам
Вот инфа по НЕКОТОРЫМ утилитам, также можна пользоваться поиском

ПС

1. Не во всех UNIX\LINUX системах можно сразу в терминале вводить команды утилит.
Например в MOTOMAGX часто перед командой утилиты нужно вводить "busybox" (например busybox free) хотя это и решено на некоторых модах.
А в некоторых выкидышах типа Android они и вовсе отсутствуют как и сам busybox, но есть возможность добавить его самому.

2. Не всегда утилиты поддерживают то что написано в манах к ним, иногда функционал меняется от версии к версии.

3. Также нужно знать что код от bash иногда может не работать корректно на shell (sh), хотя и очень редко.
Это из за того что древним программистам делать было нечего, когда не было еще интернета, и они понапридумывали кучу модификаций.
Хорошо хоть код под чистый shell подойдет ко всем им, из за чего он считается эталоном. smile.gif
А не bash как считают юные линуксойды.
[close]

 av 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, время в любом случае не будет потрачено в пустую

 av 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 clapping.gif


Знач завтра займусь началом мануала. smile.gif

 av VINRARUS

 18.6.2011, 18:40

wizard.gif Знач начну с основ.

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", но расширение важно только для ассоциаций, например в стандартном ФМ, ну и для визуального ориентирования.

spartak.gif Вот основные правила синтаксиса: Пока все, потом еще буду писать. fan_1.gif

 no av Programmer-tm(Мотофан.)

 19.6.2011, 11:24

Цитата(VINRARUS @ 19.6.2011, 14:07) *

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

Конечно. Сам собираюсь писать на shell уже пару простеньких программок собрал...

Еще бы для новичка не плохо написать какие есть выводы Show модулей и как их задействовать.

 av 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
Почему у меня такое не работает? Ничего не происходит.

 av 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

 no av Osta

 19.6.2011, 17:08

Цитата(VINRARUS @ Сегодня, 14:07)
* Будет кому полезен мануал такого плана?
мне тоже нужно, хотя и не для телефона, пиши обязательно!
интересуют ещё такие строки что в них описывается
until [ `cat /tmp/resolv.conf | grep -c nameserver` -gt 0 ]

 av VINRARUS

 27.6.2011, 15:52

Продолжу с команд для if smile.gif


Дальше описаны какие еще опции могут быть заключены в квадратные скобки.
Рассмотрим уже знакомую строчку:
Код
if [ "$GRIB" = "1" ]

С опцией "=" (идентичные значения по обе стороны "=") мы уже познакомились, она обрабатывает равные ли заданные значения, и не важно буквы там или цифры, так сказать проверяет идентичны ли 2 набора символов.
Существует способ легко изменить опцию на противоположную, поставив перед ней знак "!" (звучит как НЕ)
Например строчка:
Код
if [ "$GRIB" != "1" ]

уже проверяет наоборот разные ли значения по обе стороны знаков "!=".
Ну это незаменимо для использования с "elif", ну и для "if" тоже нужно (хотя для "if" для этой цели можно использовать "else").
clapping.gif Только нужно обязательно запомнить что символ "!" с символом "=" ВСЕГДА пишется слитно без пробелов между ими, а вот с другими опциями через ОДИН ПРОБЕЛ

rabby.gif Вот список всех опций:

Сравнение целых чисел:

-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




clapping.gif
И обязательно в условиях переменную нужно брать в двойные скобки (как и все слова с пробелами), потому что если в переменной будет пробел, а условие очень чувствительно к пробелам, то скрипт потерпит крах при выполнении!
Хотя если точно известно что значение переменной без пробелов и что она не пустая, то можно и без кавычек (хотя лучше перестраховаться)


Ну и нужно быть внимательным чтобы после "[" и перед "]" ОБЯЗАТЕЛЬНО стояли пробелы, иначе если вместо пробелов будет стоять другой символ, то скрипт на этом условии завершится с ошибкой!
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

Полная версия:


MotoFan.ru (©) 2019    Слушать Radio