motofan logo
7 страниц V  1 2 3 > »         
> 

Написание скриптов #!/bin/sh for UNIX, Кто поможет?

VINRARUS
сообщение 17.6.2011, 17:56 Закрепленное сообщение!


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Ура! В теме появилася шапочка. 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]


Сообщение отредактировал VINRARUS - 12.12.2020, 21:32
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Soshok
сообщение 7.5.2009, 14:36


Опытный
***

Группа: Пользователи
Сообщений: 115
Регистрация: 20.5.2007
Из: Борисполь
Пользователь №: 135 561
Модель телефона: Z6 'n' U9
Прошивка: 44R and OER

Рейтинг: 4.5



Привет.
Кто может мне помочь научится писать скрипты.
Может кто напишет мануал (хотя б в общих чертах)?
Оч прошу...
Зарание спасибо!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Chacha_Ivanov
сообщение 7.5.2009, 16:53


Куртуазный Маньерист
******

Группа: Разработчики
Сообщений: 1 277
Регистрация: 30.10.2005
Из: Истра
Пользователь №: 56 473
Модель телефона: LG Sol, Moto EM35
Прошивка: Уникальная


Настроение:
помоги себе сам..



Рейтинг: 805



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

Прикрепленный файл abs_guide.rar   ( 549.39 килобайт ) Кол-во скачиваний: 1105
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Soshok
сообщение 7.5.2009, 21:18


Опытный
***

Группа: Пользователи
Сообщений: 115
Регистрация: 20.5.2007
Из: Борисполь
Пользователь №: 135 561
Модель телефона: Z6 'n' U9
Прошивка: 44R and OER

Рейтинг: 4.5



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

Добавлено позже (8.5.2009, 1:26):
Chacha_Ivanov,
знаешь, я так глянул, оч много и сложно.
А попроще нету? shuffle.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
SergGG
сообщение 8.5.2009, 8:57


Мингофан
*******

Группа: Почётные мотофаны
Сообщений: 1 540
Регистрация: 30.5.2006
Из: Дніпро
Пользователь №: 85 418
Модель телефона: Droid Turbo
Прошивка: 6.0
Победитель конкурса 2008


Настроение:
Капітан Збройних сил України



Рейтинг: 1612



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

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

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

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

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

А потом здесь прочитайте Полный мануал
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
SanchoNT
сообщение 11.5.2009, 0:19


Гуру
******

Группа: Пользователи
Сообщений: 703
Регистрация: 29.10.2008
Из: Нижний Тагил
Пользователь №: 184 870
Модель телефона: Moto X (1st gen)
Прошивка: 4.4.4


Настроение:
(\/) (^_^) (\/) - человек-краб, новый супер-герой



Рейтинг: 495



может кто-нибудь знает какой командой или каким скриптом можно развернуть из фона свёрнутое ява приложение?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Virgilij
сообщение 16.5.2009, 22:39


Уруру
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 17.2.2008
Из: Убервальд
Пользователь №: 163 908
Модель телефона: cliq XT ; Photon 4G
Прошивка: PearlMod

Рейтинг: 454



SanchoNT, реально, глянь в тему Полезные скрипты для Z6 и V8 там есть скрипт, называется JavaMan, почитай о нём, может сможешь переложить на свою платформу (она у нас в принципе одинаковая)...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
RipZ
сообщение 21.5.2009, 8:18


Опытный
***

Группа: Разработчики
Сообщений: 146
Регистрация: 8.11.2006
Из: Тула
Пользователь №: 106 198
Модель телефона: Samsung Google Nexus
Прошивка: different

Рейтинг: 207



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

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


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

http://www.linuxsoft.ru/info/lib/lib/HowTo/bash/
для начала это. если ненравится - снова в гугл.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Chacha_Ivanov
сообщение 21.5.2009, 12:12


Куртуазный Маньерист
******

Группа: Разработчики
Сообщений: 1 277
Регистрация: 30.10.2005
Из: Истра
Пользователь №: 56 473
Модель телефона: LG Sol, Moto EM35
Прошивка: Уникальная


Настроение:
помоги себе сам..



Рейтинг: 805



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

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


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

Сообщение отредактировал Chacha_Ivanov - 21.5.2009, 12:15
Прикрепленный файл zTaskManMini.rar   ( 4.26 килобайт ) Кол-во скачиваний: 702
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
SanchoNT
сообщение 21.5.2009, 13:03


Гуру
******

Группа: Пользователи
Сообщений: 703
Регистрация: 29.10.2008
Из: Нижний Тагил
Пользователь №: 184 870
Модель телефона: Moto X (1st gen)
Прошивка: 4.4.4


Настроение:
(\/) (^_^) (\/) - человек-краб, новый супер-герой



Рейтинг: 495



скачал, закинул на карту памяти, законнектился через 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


Гуру
******

Группа: Пользователи
Сообщений: 703
Регистрация: 29.10.2008
Из: Нижний Тагил
Пользователь №: 184 870
Модель телефона: Moto X (1st gen)
Прошивка: 4.4.4


Настроение:
(\/) (^_^) (\/) - человек-краб, новый супер-герой



Рейтинг: 495



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

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



Сообщение отредактировал VINRARUS - 11.8.2011, 11:47
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Programmer-tm(Мотофан.)
сообщение 12.6.2011, 11:46


Мотофан
*******

Группа: Пользователи
Сообщений: 1 681
Регистрация: 21.3.2010
Из: Из мира сего
Пользователь №: 215 291
Модель телефона: Moto X Play
Прошивка: Модифицированная...


Настроение:
Делать невозможное возможным...



Рейтинг: 620



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

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

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

Сообщение отредактировал Programmer-tm(Мотофан.) - 13.6.2011, 11:59
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DaNTaLiaN™
сообщение 17.6.2011, 19:42


Ветеран
*****

Группа: Пользователи
Сообщений: 321
Регистрация: 28.11.2009
Из: СПб
Пользователь №: 210 392
Модель телефона: Motorola

Рейтинг: 536



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

Сообщение отредактировал DaNTaLiaN™ - 17.6.2011, 19:43
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 17.6.2011, 20:01


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



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
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 18.6.2011, 18:40


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



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 Вот основные правила синтаксиса:
  • В командах скрипта важен каждый символ и даже пробел, иногда из за невнимательности получаются большие проблемы с работой скрипта.
  • И регистр букв тоже важен, например команды "sleep" и "SLEEP" являются совершенно разными командами.
  • Если в начале строчки стоит решётка "#", то вся эта строчка не воспринимается системой, но если решетка входит в область выделенную кавычками, то она воспринимается как текст. В основном используется для подсказок или визуального разделителя. Также решётка может стоять сразу после команды, и опять же часть строчки после нее не воспринимается системой
  • smile.gif Есть 3 вида кавычек: " ` ', и нельзя открыть одной кавычкой, а закрыть другой, потому что так еще одно поле откроется:
    Код
    echo 'hot "dog '$FS'" otak"`free`"'


    ` - заключенные в них слова сразу выполняются системой как команда, и в место этого появляется текст который продиктовала выполняемая команда.
    Код
    `echo 58945`
    =
    Код
    58945


    " - используется для объединения текста который может содержать как пробелы, так и много строк, и текст заключенный в них воспринимается так одно слово, используется для переменных и для команд запуска например шоумодулей, переменные заменяются своим значением ,а если где то в выделенном тексте есть команда выделенная такими кавычками ``, то нужно читать выше описание.
    Код
    "kupa `echo 58945`"
    =
    Код
    kupa 58945


    ' - эти кавычки действуют наподобе как `, только наоборот, то есть если в них заключены или переменные, или любые системные символы, или даже команда взята в ``, то система будет воспринимать выделенную область как простой текст, не обращая внимание на содержание.
    Код
    ' "kupa `echo 58945`" '
    =
    Код
    "kupa `echo 58945`"

  • smile.gif $ - это символ переменной, а переменная - это как бы маленькая закладка на ранее заданное значение. Задается с новой строки так:
    Код
    VoDoChKa="Пить вредно!"

    И при упоминании далее переменной вместо нее вставляется заданный текст:
    Код
    Совет с того света:$VoDoChKa
    =
    Код
    Совет с того света:Пить вредно!

    Иногда бывает что после переменной сразу нужно написать текст без пробела и других символов, и поэтому чтобы переменная работала, можна ее выделить таким способом:
    Код
    ${VoDoChKa}наверно
    =
    Код
    Пить вредно!наверно

  • smile.gif 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
Пока все, потом еще буду писать. fan_1.gif

Сообщение отредактировал VINRARUS - 18.6.2011, 19:49
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Programmer-tm(Мотофан.)
сообщение 19.6.2011, 11:24


Мотофан
*******

Группа: Пользователи
Сообщений: 1 681
Регистрация: 21.3.2010
Из: Из мира сего
Пользователь №: 215 291
Модель телефона: Moto X Play
Прошивка: Модифицированная...


Настроение:
Делать невозможное возможным...



Рейтинг: 620



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

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

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

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

Сообщение отредактировал VINRARUS - 4.11.2017, 19:11
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 19.6.2011, 12:39


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1336



#!/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


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Код
#!/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


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



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

Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 27.6.2011, 15:52


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Продолжу с команд для 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
И обязательно в условиях переменную нужно брать в двойные скобки (как и все слова с пробелами), потому что если в переменной будет пробел, а условие очень чувствительно к пробелам, то скрипт потерпит крах при выполнении!
Хотя если точно известно что значение переменной без пробелов и что она не пустая, то можно и без кавычек (хотя лучше перестраховаться)


Ну и нужно быть внимательным чтобы после "[" и перед "]" ОБЯЗАТЕЛЬНО стояли пробелы, иначе если вместо пробелов будет стоять другой символ, то скрипт на этом условии завершится с ошибкой!


Сообщение отредактировал VINRARUS - 27.6.2011, 22:20
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 27.6.2011, 22:19


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Цитата(Osta @ 19.6.2011, 20:08)
* интересуют ещё такие строки что в них описывается
until [ `cat /tmp/resolv.conf | grep -c nameserver` -gt 0 ]


В начале выполняется команда "cat /tmp/resolv.conf | grep -c nameserver" - читается файл /tmp/resolv.conf и потом этот текст обрабатывается через grep, который в даном примере выдает число строк в которых есть слово "nameserver".
Потом проверяется больше ли полученное число за 0, то есть есть ли ли хоть одно слово "nameserver" в файле /tmp/resolv.conf.

Ну и для команды "until" выводится результат условия (0 или 1)
Ну нашол что "until" это из цыкла, который выполняется если условие ложно, в данном примере цыкл повторяется пока слово "nameserver" в файле /tmp/resolv.conf будет отсутствовать.


Сообщение отредактировал VINRARUS - 27.6.2011, 22:49
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 4.7.2011, 10:25


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1336



Недавно делал калькулятор скриптовой. а сейчас не получается(
#!/bin/bash
x=$(showTextEntry "меню" "введите число1:" "")
y=$(showTextEntry "меню" "введите число2:" "")
z=$((x + y))
showQ "отчет" "сумма двух чисел равна $z"

Почему это не работает???

если переменные x и y объявить в программе:
x=5
y=6
то, все прекрасно работает, в чем проблема?

Сообщение отредактировал igoripp - 4.7.2011, 10:28
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Programmer-tm(Мотофан.)
сообщение 4.7.2011, 10:44


Мотофан
*******

Группа: Пользователи
Сообщений: 1 681
Регистрация: 21.3.2010
Из: Из мира сего
Пользователь №: 215 291
Модель телефона: Moto X Play
Прошивка: Модифицированная...


Настроение:
Делать невозможное возможным...



Рейтинг: 620



igoripp,
а файлик showTextEntry присутствует?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 4.7.2011, 10:51


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1336



Programmer-tm(Мотофан.), да.

Добавлено позже (4.7.2011, 14:56):
#!/bin/bash
x=$(showTextEntry "меню" "введите число1:" "")
showQ "отчет" "сумма двух чисел равна $x" ""
Если так, то получается какое то непонятное сообщение, где много всего, а самая последняя строка - значение моей переменной
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Programmer-tm(Мотофан.)
сообщение 4.7.2011, 11:08


Мотофан
*******

Группа: Пользователи
Сообщений: 1 681
Регистрация: 21.3.2010
Из: Из мира сего
Пользователь №: 215 291
Модель телефона: Moto X Play
Прошивка: Модифицированная...


Настроение:
Делать невозможное возможным...



Рейтинг: 620



Цитата

Добавлено позже (4.7.2011, 14:56):
#!/bin/bash
x=$(showTextEntry "меню" "введите число1:" "")
showQ "отчет" "сумма двух чисел равна $x" ""
Если так, то получается какое то непонятное сообщение, где много всего, а самая последняя строка - значение моей переменной


x="`$mypath/showTextEntry 'Menu' 'Input 1'`"

так то же может верно отработать:
x=`$mypath/showTextEntry 'Menu' 'Input 1'`

Сообщение отредактировал Programmer-tm(Мотофан.) - 4.7.2011, 11:09
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 4.7.2011, 12:25


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1336



Цитата

x="`$mypath/showTextEntry 'Menu' 'Input 1'`"

так то же может верно отработать:
x=`$mypath/showTextEntry 'Menu' 'Input 1'`

так тоже не работает, проверил другие приложения, которые не я писал. В них такая же ситуация. Сейчас ставлю другую прошивку, что то мне подсказывает: это она виновата...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Programmer-tm(Мотофан.)
сообщение 4.7.2011, 13:13


Мотофан
*******

Группа: Пользователи
Сообщений: 1 681
Регистрация: 21.3.2010
Из: Из мира сего
Пользователь №: 215 291
Модель телефона: Moto X Play
Прошивка: Модифицированная...


Настроение:
Делать невозможное возможным...



Рейтинг: 620



igoripp,
Просто шоу модуль найди такой
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 4.7.2011, 17:22


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Цитата(igoripp @ Сегодня, 13:25)
* #!/bin/bash
x=$(showTextEntry "меню" "введите число1:" "")
y=$(showTextEntry "меню" "введите число2:" "")
z=$((x + y))
showQ "отчет" "сумма двух чисел равна $z"

А ну так попробуй:
Код
#!/bin/sh
x=`showTextEntry "меню" "введите число1:" ""`
y=`showTextEntry "меню" "введите число2:" ""`
let z=$x + $y
showQ "отчет" "сумма двух чисел равна $z"

Это на "sh", а с "bash" я не связывался. smile.gif

Сообщение отредактировал VINRARUS - 4.7.2011, 17:23
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 4.7.2011, 17:30


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1336



VINRARUS, Проблема решилась перепрошивкой телефона, на zMod. Здесь все нормально запустилось. Видать, в монстре E8_silence-7, не работает корректно showTextEntry.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
K()t
сообщение 7.7.2011, 8:33


Мотофан
*******

Группа: Почётные мотофаны
Сообщений: 1 818
Регистрация: 3.7.2009
Из: Niko City, Ukraine
Пользователь №: 202 229
Модель телефона: Motorola Razr Maxx HD
Прошивка: CM
Финалист Конкурса 2010


Настроение:




Рейтинг: 1118.5



Кто поможет написать команду чтобы она искала в файле текст GroupID = ezx и меняла его на GroupID = root
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 9.7.2011, 20:40


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Цитата(K()t @ 7.7.2011, 11:33)
* Кто поможет написать команду чтобы она искала в файле текст GroupID = ezx и меняла его на GroupID = root

Както так, пробуй, не знаю будет ли работатъ как нада, но ход мысли вроде правельный, проверить у меня нету возможности. sad.gif

Код
#!/bin/sh
FU=/mmc/mmca1/zzz
MU=`sed -e '/^GroupID = ezx/!d;=' -e '/^GroupID = ezx/d' $FU`
for OLOLO in $MU
do
echo $OLOLO
sed "$OLOLO"c'GroupID = root' $FU > $FU
done



Сообщение отредактировал VINRARUS - 4.11.2017, 19:18
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Pyth_ON!
сообщение 10.7.2011, 6:47


MOTOMAGXX0r
****

Группа: Пользователи
Сообщений: 166
Регистрация: 29.4.2009
Пользователь №: 198 680
Модель телефона: ROKR EM30/PEARL VE66
Прошивка: R6716_G_71.01.02R_B

Рейтинг: 48



Цитата(K()t @ 7.7.2011, 8:33) *

Кто поможет написать команду чтобы она искала в файле текст GroupID = ezx и меняла его на GroupID = root

Ну, первое что придумал:
Код

#!/bin/sh
cat $1 | sed 's/^GroupID = ezx/GroupID = root/g' > $1.tmp
rm $1; mv $1.tmp $1

Говнокод, но должен работать smile.gif
Записать этот код в файл и запускать как:
Код
script.sh /path/to/file

где /path/to/file - файл, в котором нужно выполнить замену.
Вообще если ты хочешь встроить это в свой скрипт то выложи скрипт, помогу smile.gif

Сообщение отредактировал Pyth_ON! - 10.7.2011, 13:57
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 10.7.2011, 8:48


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Pyth_ON!,
а и правда, все решается банальной заменой!
Как я мог о ней забыть! sad.gif

Просто недавно я работал над сложным скриптом, где мне нужно было заменять опреленные строки, вот каша и застыла в бошке...

Вот токо я б посоветовал все параметры для замены всегда писатъ с символом начала строки "^", ну мало ли, может ктото так с дуру прогу назвет. smile.gif

А вот так грамотно это делать:
Код
sed -i '/^GroupID = ezx/GroupID = root/g' $1


Сообщение отредактировал VINRARUS - 4.11.2017, 19:20
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Pyth_ON!
сообщение 10.7.2011, 13:57


MOTOMAGXX0r
****

Группа: Пользователи
Сообщений: 166
Регистрация: 29.4.2009
Пользователь №: 198 680
Модель телефона: ROKR EM30/PEARL VE66
Прошивка: R6716_G_71.01.02R_B

Рейтинг: 48



VINRARUS, Спасибо за дополнение smile.gif

Сообщение отредактировал Pyth_ON! - 10.7.2011, 14:00
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 10.7.2011, 17:41


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



уважаемые, помогите перенести скрипт с явы

Код



<script type='text/javascript'>
var d2 = new Date();
var day2 =   TwoDigits(d2.getDate());
var month2 = TwoDigits(d2.getMonth()+1);
var year2 =  d2.getFullYear();
document.write("Новости за <b>сегодня</b> "+day2+"."+month2+"."+year2);
var MODAY = "http://www.vedomosti.ru/podcast/files/"+year2+"/"+month2+"/"+day2+"/vedomosti.mp3";


function TwoDigits(s){
if(s<10){s = '0'+s;}else{s = ''+s;} return(s)
}

</script>




скрипт формирует ссылку в зависимости от сегодняшней даты
к примеру сегодня 15 07 2011
ссылка должна быть
_http://www.vedomosti.ru/podcast/files/2011/07/15/vedomosti.mp3
год - всегда 4 цифры, месяц - всегда две цифры, дата - всегда 2 цифры
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 10.7.2011, 19:04


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Osta, вот ето подставляет в ссылку севодняшную дату. smile.gif
Код
URL="http://www.vedomosti.ru/ podcast/files/`date +%Y/%m/%d`/ vedomosti.mp3"


Сообщение отредактировал VINRARUS - 4.11.2017, 19:23
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 11.7.2011, 18:56


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1336



Помогите создать скрипт, который, через 120 секунд после включения копировал бы один файл в заданную папку. Файл zCpuOver.txt в /mmc/movinand1/Uknow/

EXL: В meldl.conf добавь:
Код

sleep 120
cp zCpuOver.txt /mmc/movinand1/Uknow/zCpuOver.txt

Вот только не знаю, будет ли такой способ работать.


Сообщение отредактировал EXL - 11.7.2011, 19:58
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
mPhoneR
сообщение 12.7.2011, 5:03


Мастер
****

Группа: Пользователи
Сообщений: 196
Регистрация: 25.2.2009
Из: 42RUS
Пользователь №: 194 388
Модель телефона: E2\LG GT540
Прошивка: mUbuntu\2.2.2


Настроение:
Mood downloading...



Рейтинг: 60



А может, лучше как-то так?

Код
(sleep 120; /путь/к/скрипту/zCpuOver.txt)&


Сообщение отредактировал mPhoneR - 12.7.2011, 5:05
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 12.7.2011, 5:47


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



а есть какие-то готовые парсеры с башорга или иного?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Pyth_ON!
сообщение 13.7.2011, 4:58


MOTOMAGXX0r
****

Группа: Пользователи
Сообщений: 166
Регистрация: 29.4.2009
Пользователь №: 198 680
Модель телефона: ROKR EM30/PEARL VE66
Прошивка: R6716_G_71.01.02R_B

Рейтинг: 48



Цитата(Osta @ 12.7.2011, 5:47) *

а есть какие-то готовые парсеры с башорга или иного?

Концепт на php: http://rfteam.110mb.com/shao/4.php
Код на php: http://forum.max-3000.com/viewtopic.php?f=...672&start=0
Еще php: http://paste.org.ru/?eacrbj
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Написание скриптов #!/bin/sh for UNIX, Кто поможет? · Motorola на Linux OS · Forum
 

7 страниц V  1 2 3 > » 
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 14.5.2025, 7:51

Форум живёт: