motofan logo
> 

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

Soshok
сообщение 7.5.2009, 14:36


Опытный
***

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

Рейтинг: 4.5



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


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

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 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
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

Сообщений в этой теме
Soshok   Написание скриптов #!/bin/sh for UNIX   7.5.2009, 14:36
Chacha_Ivanov   Изучай на здоровье bigsmile;   7.5.2009, 16:53
Soshok   Chacha_Ivanov, чего так много??? :lol: :unsure: ...   7.5.2009, 21:18
SergGG   [b]Chacha_Ivanov, чего так много??? :lol: :unsu...   8.5.2009, 8:57
SanchoNT   может кто-нибудь знает какой командой или каким ск...   11.5.2009, 0:19
Virgilij   SanchoNT, реально, глянь в тему Полезные скрипты д...   16.5.2009, 22:39
Chacha_Ivanov   Вот Ant-ON написал для em30/e8 программульку небо...   21.5.2009, 12:12
SanchoNT   скачал, закинул на карту памяти, законнектился чер...   21.5.2009, 13:03
SanchoNT   ну вобщем ничего не помогает, потом открыл zTaskMa...   21.5.2009, 13:49
Programmer-tm(Мотофан.)   А по скрипту кто нить сможет помочь? Нужна команда...   12.6.2011, 11:46
VINRARUS   Ура! В теме появилася шапочка. :watsup: В дан...   17.6.2011, 17:56
DaNTaLiaN™   Пытался написать по подобию скрипт для zpk архива ...   17.6.2011, 19:42
VINRARUS   DaNTaLiaN™, есть серьезные но простые ошыбки, вот ...   17.6.2011, 20:01
VINRARUS   :wizard: Знач начну с основ. Shell скрипт (SH) - ...   18.6.2011, 18:40
Programmer-tm(Мотофан.)   Будет кому полезен мануал такого плана? ;) Конеч...   19.6.2011, 11:24
igoripp   #!/bin/sh showQ "Очистити базу?" ...   19.6.2011, 12:39
VINRARUS   #!/bin/sh showQ "Очистити базу?" ...   19.6.2011, 12:45
Osta   мне тоже нужно, хотя и не для телефона, пиши обяза...   19.6.2011, 17:08
VINRARUS   Продолжу с команд для if :) Дальше описаны как...   27.6.2011, 15:52
VINRARUS   В начале выполняется команда "cat /tmp/reso...   27.6.2011, 22:19
igoripp   Недавно делал калькулятор скриптовой. а сейчас не ...   4.7.2011, 10:25
Programmer-tm(Мотофан.)   igoripp, а файлик showTextEntry присутствует?   4.7.2011, 10:44
igoripp   Programmer-tm(Мотофан.), да. Добавлено позже (4.7...   4.7.2011, 10:51
Programmer-tm(Мотофан.)   x="`$mypath/showTextEntry 'Men...   4.7.2011, 11:08
igoripp   так тоже не работает, проверил другие приложения,...   4.7.2011, 12:25
Programmer-tm(Мотофан.)   igoripp, Просто шоу модуль найди такой   4.7.2011, 13:13
VINRARUS   А ну так попробуй: #!/bin/sh x=`showTextE...   4.7.2011, 17:22
igoripp   VINRARUS, Проблема решилась перепрошивкой телефона...   4.7.2011, 17:30
K()t   Кто поможет написать команду чтобы она искала в фа...   7.7.2011, 8:33
Pyth_ON!   Кто поможет написать команду чтобы она искала в ф...   10.7.2011, 6:47
VINRARUS   Както так, пробуй, не знаю будет ли работатъ как ...   9.7.2011, 20:40
VINRARUS   Pyth_ON!, а и правда, все решается банальной ...   10.7.2011, 8:48
Pyth_ON!   VINRARUS, Спасибо за дополнение :)   10.7.2011, 13:57
Osta   уважаемые, помогите перенести скрипт с явы ...   10.7.2011, 17:41
VINRARUS   Osta, вот ето подставляет в ссылку севодняшную дат...   10.7.2011, 19:04
igoripp   Помогите создать скрипт, который, через 120 секунд...   11.7.2011, 18:56
mPhoneR   А может, лучше как-то так? (sleep 120; /путь/...   12.7.2011, 5:03
Osta   а есть какие-то готовые парсеры с башорга или иног...   12.7.2011, 5:47
Pyth_ON!   а есть какие-то готовые парсеры с башорга или ино...   13.7.2011, 4:58
Osta   а не на php парсеры есть ?   13.7.2011, 13:17
Pyth_ON!   а не на php парсеры есть ? Могу собрать минималь...   13.7.2011, 16:08
Osta   и кто бы показал Так Было - Так Стало )? интересу...   13.7.2011, 16:55
VINRARUS   Вот нашол способ быстрее считывать параметры с кон...   18.7.2011, 11:06
igoripp   Знающие люди, подскажите. sh поддерживается всеми ...   19.7.2011, 16:48
VINRARUS   Я за sh, так как он поддерживаеться гарантировано ...   19.7.2011, 18:29
Osta   Name=`date +%H:%M@%d%a-` как правильн...   26.7.2011, 12:34
VINRARUS   Разделив 1 команду на 2: Name="`date +%H...   26.7.2011, 14:23
Osta   VINRARUS, спасибо, работает ! А можно это пер...   26.7.2011, 16:05
VINRARUS   Тут очень глубокие знания нада, да еще и не только...   26.7.2011, 17:55
Osta   смотри : скачиваем файл http://bash.org.ru/random,...   26.7.2011, 19:43
VINRARUS   я не знаю как на sh качать файлы с нета. А без ска...   27.7.2011, 5:41
igoripp   А кто подскажет как провернуть одно дело? Есть фай...   27.7.2011, 9:47
IlluminatI   igoripp, на Си где-то был исходник, могу впринципе...   27.7.2011, 12:15
VINRARUS   igoripp, ето выдаст все в 1 строчку tr -d "...   27.7.2011, 12:40
Osta   напиши как будто он тут /var/etc/file.html   27.7.2011, 12:44
igoripp   VINRARUS, a как этим пользоваться? Конструкция вид...   27.7.2011, 13:18
VINRARUS   cat 1.txt | tr -d "\n" > 2.txt о...   27.7.2011, 13:51
igoripp   Так тоже не работает( вопрос по-прежнему открыт...   27.7.2011, 14:58
VINRARUS   igoripp, у меня работает. Надеюся ты вместо 1.ТХТ...   27.7.2011, 15:56
igoripp   VINRARUS, Спасибо огромное :clapping: Такая связка...   28.7.2011, 5:53
VINRARUS   Osta, вот етот код ищет в файле строчку с словами ...   28.7.2011, 11:43
Osta   tmp/V.txt стабильно равен 0 байт , переносы по-люб...   28.7.2011, 13:42
VINRARUS   вот: #!/bin/sh QT=`cat /var/etc/file.html...   28.7.2011, 18:29
Osta   ӕ - а что это за символ? у меня akelpad утве...   28.7.2011, 18:38
VINRARUS   ну ето символ который никто не использует. Мож поп...   28.7.2011, 21:15
Osta   заменил на ^ тхт файл пуст   28.7.2011, 21:27
VINRARUS   Osta, выложы сюда сюда тот файл который прога дол...   29.7.2011, 4:57
Osta   Osta, выложы сюда сюда тот файл который прога до...   29.7.2011, 10:20
VINRARUS   Osta, чото тот файл не в юникоде, у меня там иног...   29.7.2011, 16:07
Osta   можно сделать от первого слова sux до первого слов...   29.7.2011, 16:31
VINRARUS   нужно уникальное первое слово или сочетание символ...   29.7.2011, 19:15
igoripp   Этот код для перевода десятичного числа в двоичное...   10.8.2011, 19:49
VINRARUS   спасиба :) Ну тут будет сложновато. Нада все дейст...   11.8.2011, 7:26
IlluminatI   жесть... это всё безобразие надо в цикл сворачива...   11.8.2011, 7:59
igoripp   Считать должен правильно, я проверял только на про...   11.8.2011, 8:03
IlluminatI   в hex можно делать проверку: если от 0 до 9 то зап...   11.8.2011, 8:04
igoripp   Там и так цикл есть) Добавлено позже (11.8.2011, ...   11.8.2011, 8:05
IlluminatI   я сишными вставками покажу) int ss[2] = {...   11.8.2011, 8:48
Programmer-tm(Мотофан.)   Ребят. Давайте подумаем, как сделать русско англий...   11.8.2011, 9:20
VINRARUS   if GROB="`sed "/^$slovo/!d...   11.8.2011, 10:23
IlluminatI   а не проще посимвольно искать? Геморойней конечно ...   11.8.2011, 12:01
Programmer-tm(Мотофан.)   IlluminatI, Это значит если найдется содержимое п...   11.8.2011, 12:53
igoripp   User and Linux part1 и User and Linux part2 - ста...   11.8.2011, 19:02
VINRARUS   #!/bin/sh CFGPATH=${0%/*}/nastroyka.cfg Z...   16.8.2011, 9:54
Programmer-tm(Мотофан.)   #!/bin/sh CFGPATH=${0%/*}/1.cfg Z2=...   27.8.2011, 5:33
igoripp   Уважаемые, как заархивировать папку bd, лежащую ря...   30.8.2011, 13:19
Programmer-tm(Мотофан.)   Пакуем: /usr/local/p7zip/7z (путь где архиватор в...   30.8.2011, 13:58
Diag   Можно для распаковки busybox unzip использовать......   30.8.2011, 18:13
Programmer-tm(Мотофан.)   Diag, То же вариант) Ну, выберет, что больше приг...   30.8.2011, 18:17
VINRARUS   Diag, busybox dirname /tama/kaka.rak busybox base...   30.8.2011, 18:48
Diag   VINRARUS, благодарю. А как мне тогда получить имя...   31.8.2011, 9:35
igoripp   Архивация происходит на Ура, а вот разархивация ...   31.8.2011, 9:47
Programmer-tm(Мотофан.)   А $mypath/arh/arh.7z там точно архив лежит? с...   31.8.2011, 10:55
igoripp   Programmer-tm(Мотофан.), 100% странно очень... А у...   31.8.2011, 11:32
Programmer-tm(Мотофан.)   igoripp, Скачай тогда You_Box в теме приложений z...   31.8.2011, 12:10
VINRARUS   Мне неизвестны способы, только через натив sed ...   31.8.2011, 16:10
Diag   Я вам премного благодарен. И вопрос на засыпку: ка...   31.8.2011, 16:22
VINRARUS   Diag, так вроде: aga=`echo $ga | sed s...   31.8.2011, 17:06
igoripp   /usr/local/p7zip/7z x "$mypath/arh/arh.7z...   31.8.2011, 18:04
3 страниц V  1 2 3 >

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

Ответ в темуСоздание новой темы
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 14.6.2025, 3:41

Форум живёт: