Как научиться писать скрипты. Как писать скрипты для Windows? Как это все работает


В этой статье:

  • Размещение PHP на HTML-странице
  • Комментарии в скриптах
  • Отображение текста
  • Переменные и константы в PHP
  • Оператор присваивания
  • О типах данных

Для написания кода на PHP подходит любой текстовый редактор (например Notepad++).

Размещение PHP на HTML-странице

Код скрипта PHP может размещаться непосредственно на HTML-странице. Чтобы узнать, как это делается, давайте рассмотрим следующий простой пример:

Это обычный HTML-документ

С первого взгляда пример напоминает обычный файл HTML. Единственное новшество здесь –– конструкция .

Все, что стоит между , интерпретируется как код на языке PHP. Здесь мы также видим пример использования команды echo –– одной из наиболее важных, часто используемых команд при программировании на этом языке. Команда echo применяется, когда необходимо что-либо написать в текущем документе. Так наша небольшая программа на PHP в HTML-документе выводит фразу “А это PHP”. Все что находится вне процессор РНР передает без изменения непосредственно на динамическую web-страницу.

Вместо специального тега могут также использоваться теги :

код на РНР

Наш первый сценарий

Тексты сцеариев (php-программ) должны храниться в файлах с раширением php.

РНР-код состоит из отдельных операторов, каждый из которых завершается точкой с запятой (ее отсутствие вызовет сообщение об ошибке ).

Первый скрипт на РНР (файл index.php) будет достаточно простым, но уже он продемонстрирует совместное использование HTML и РНР.

Первый пример

PHP-программа состоит из двух операторов присваивания, определения значения константы и вывода текста и текущей даты в окно браузера с помощью команды echo .

Данный текст можно набрать в любом текстовом редакторе, например, в NotePad++, и сохранить под именем index.php. Следует убедиться, что файл сохранен как php-файл, в противном случае он не будет корректно обработан РНР.

В случае локальной работы необходимо скопировать файл index.php в каталог документов web-сервера. Для Denver это home/localhost/www (если в настройках не указано иное). После чего можно переходить непосредственно к запуску скрипта.

Для запуска скрипта index.php следует открыть web-браузер, а затем ввести в адресной строке полный путь к этому скрипту. В случае локальной установки адрес будет таким:

Если все сделано правильно, на экране мы увидим:

Файл styles.css (таблица стилей):

/* Стили для отображения содержимого страницы */ * { margin: 0; padding: 0; } body { font-family: Verdana, Arial, sans-serif; color: #14556b; background-color: #f2f2f2; margin: 20px; } h3, p { margin: 6px 0; /* Поля заголовков и абзацев */ }

Прямо из браузера мы можем просмотреть код этой странички, сформированный web-сервером:

Таким образом, имя переменной заменяется ее значением, которое помещается на то же место , где в программе стояло имя этой переменной.

Итак, PHP-файлы обычно представляют собой смесь HTML, CSS и РНР. При этом РНР-код всегда заключается внутри конструкции . Web-сервер посылает HTML-код браузеру без изменения. РНР-код выполняется, и если он формирует теги и какой-либо текст для отображения, этот текст вставляется на то место , где размещался РНР-код. Браузер интерпретирует HTML-теги страницы и отображает результат на экране.

PHP-код может располагаться в произвольном месте и многократно включаться в текст скрипта. С его помощью можно также формировать и HTML-теги, что видно из нашего примера.

Комментарии в скриптах

В РНР существует три типа комментариев. Первый позволяет располагать комментарии в нескольких строках, начиная их символами /* (записываются без пробела) и заканчивая символами */, например:

Следует иметь ввиду, что вложенные комментарии записывать нельзя .

Многострочные комментарии могут оказаться полезными там, где надо вставить значительный объем текста. Кроме того, распространенным приемом при отладке программы является заключение части кода в комментарий (чтобы предотвратить его выполнение).

Остальные два типа комментариев начинаются с символов // или символа # и продолжаются только до конца строки, в которой они записаны. Этот тип комментариев удобен тем, что их можно размещать справа от операторов, например:

Очень часто комментарий добавляют в начало сценария, чтобы дать о нем краткую информацию и указать, какие функции он выполняет. Например:

Отображение текста

Оператор echo , который предназначен для отображения произвольного текста на web-странице, является, пожалуй, наиболее употребительным оператором РНР. В простейшем случае после echo следует поместить одну строку в кавычках. Текст может быть заключен как в двойные кавычки, так и в простые кавычки (апострофы ). Для отображения чисел кавычки необязательны, например:

В общем случае после echo можно записать несколько строк для вывода, которые разделяются запятыми.

При необходимости длинная строка может быть размещена на нескольких строках в тексте скрипта, например:

Отдельные строки могут объединяться при помощи оператора сцепления «.» –– точка. В результате образуется единая строка, которая передается оператору echo. Например:

что эквивалентно

Для отображения кавычки следует разместить перед ней обратный слеш, например:

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

Отображение большого текста

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

Переменные, оператор присваивания

Как и в любом языке программирования, переменные предназначены для хранения данных. В РНР имена переменных всегда начинаются со знака доллара $, далее следует буква или знак подчеркивания, после которого может следовать произвольное количество букв, цифр или знаков подчеркивания. Следует помнить, что в именах переменных большие буквы и малые буквы различаются. Например, $var и $Var –– это разные переменные.

После создания переменной (в результате присваивания ей некоторого значения), доступ к этой переменной возможен в любом месте скрипта. При этом одна и та же переменная может содержать на протяжении программы значения разных типов.

Переменная существует до тех пор, пока выполняется программа.

Для присвоения значения переменной в РНР используется оператор присваивания , обозначаемый знаком равенства =. Ниже приведены примеры операторов присваивания:

$ternperature = 24;

$number_of_earths = 1;

$pi = 3.1415926535;

$message = “Доброе утро!”;

Обратим внимание, что одним переменным присвоены числа, а другим - строки.

Задание . Вывести все значения этих переменных в браузер: (1) каждое значение –– в новой строке; (2) –– все значения –– в одной строке.

Константы

Иногда не требуется менять в программе один раз заданное значение. Для этого используются константы - их значения не изменяются в процессе выполнения скрипта.

Для описания константы используется функция define, которой передается имя константы и ее значение. Существует соглашение, по которому имена констант всегда пишутся в верхнем регистре (большими буквами), например:

define (“PI”, 3.1415926535);

Следует обратить внимание, что при определении константы перед ней не ставится знак доллара. Попытка изменения значения константы с помощью оператора присваивания приведет к ошибке.

Константам нельзя давать имена, которые являются служебными словами языка РНР (так как перед именем константы не ставится знак доллара).

Зарезервированные (служебные) слова РНР:

and array as break default
die do echo endif endswitch
endwhile global if include print
require eval lnclude_onc e require_once return
case сfunction class const continue
declare else elseif empty enddeclare
endfor endforeach exception exit extends
for foreach function isset list
new old_function or php_user_filter static
switch unset use while xor

В языке РНР определено множество встроенных констант, которые можно использовать в сценариях. Эти константы начинаются с двух символов подчеркивания и заканчиваются тоже двумя символами подчеркивания. Например:

__CLASS__ __FILE__ __FUNCTION__ __LINE__ __METHOD__

Прерывание выполнения сценария

Наиболее часто для останова выполнения сценария применяется функция exit (). Другой полезной функцией является die (“Сообщение”), которая позволяет также вывести сообщение об ошибке. Это позволяет сообщить пользователю причину, по которой сценарий завершился неудачей.

Уничтожение переменной

Иногда требуется принудительно уничтожить переменную. Для этого предназначена функция unset().

Если попробовать выполнить оператор echo “$variable” после вызова функции unset , то мы получим сообщение об ошибке –– переменная $variable больше не будет существовать.

Можно одновременно уничтожить несколько переменных:

unset($variable, $name);

Следующий текст при первом чтении можно пропустить

Типы данных

В языке РНР тип переменной определяется автоматически при создании переменной на основе ее значения. Тем не менее, следует иметь представление о типах данных, которые могут использоваться. Всего их восемь:

  • Логический тип, содержит значения TRUE или FALSE.
  • Целое число.
  • Вещественное число.
  • Текст произвольной длины.
  • Массив.
  • Объект.
  • Ресурс (например, файл).
  • NULL Значение NULL.

Например:

$variable = TRUE;

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

Для предотвращения потенциальных проблем не следует смешивать различные типы данных. Но даже и в таком случае РНР выполняет неявное преобразование типов. Если же требуется выполнить явное преобразование типа, то требуемый тип должен быть указан слева от имени переменной в круглых скобках. Вот несколько примеров явного преобразования типов:

$int_variable = (integer) $variable;

$float_variable = (float) $variable;

$string_jyariable = (string) $variable;

При преобразовании в логический тип boolean, следующие значения преобразуются в значение FALSE.

  • Целое число 0.
  • Вещественное число 0.0.
  • Пустая строка и строка “0”.
  • Массив с нулевым количеством элементов.
  • Объект, не имеющий свойств.
  • Специальный тип NULL.

При преобразовании к типу целых значений другие типы преобразуются так:

  • Логическое FALSE преобразуется в целое число 0, логическое TRUE преобразуется в целое число 1.
  • Вещественные числа округляются в меньшую сторону. При преобразовании в вещественное число сперва осуществляется преобразование в целочисленное значение.

Возможно также преобразование строковых значений в числовые типы данных, но при этом имеется ряд особенностей.

Любые другие значения, включая все ресурсы, преобразуются в TRUE.

Итоги

Язык РНР предназначен для создания динамических web-страниц.

  • Код РНР заключается между тегами .
  • Оператор echo предназначен для отображения текста.
  • Имеется возможность включать в код РНР большие блоки текста
  • В РНР используются три вида комментариев: /* … */, // и #.
  • Имя переменной предваряется знаком доллара $, начинается с буквы или знака подчеркивания, после которого может следовать произвольное количество букв, цифр или знаков подчеркивания.

Доброго времени суток всем желающим приобщиться к миру пользовательских скриптов (они же userscript , userJS , юзерскрипты ).

В этой статье я хочу поведать о том, что такое юзерскрипты, c чем их едят и, главное, как их готовят !

Внимание: предполагается минимальное знание javascript.
На практике доказано: юзерскрипты может писать человек, не знакомый с программированием, но обладающий усидчивостью и желанием изучить javascript!
О том, что такое javascript и как с ним обращаться, можно узнать на javascript.ru .

Что такое юзерскрипты? Кратко: юзерскрипт - это программа, написанная на языке JavaScript, хранящаяся на компьютере пользователя и подключаемая браузером на определенных страницах. Юзерскрипт представляет собой файл с расширением .user.js (именно по расширению браузеры понимают, что файл является юзерскриптом), содержащий метаданные и непосредственно javascript-код.

При подключении к странице юзерскрипт выполняется так же, как и обычные javascript-сценарии.
У юзерскрипта есть доступ к DOM-дереву страницы, в контексте которой он выполняется.
В современных браузерах у юзерскрипта есть доступ к localStorage и прочим HTML5 API.

Юзерскрипты поддерживаются всеми основными современными браузерами (и даже кое-как поддерживаются IE7 и выше ).

Самый известный портал юзерскриптов - userscripts.org . Тут можно найти хранилище скриптов, инструменты управления своими скриптами на портале и, что не маловажно, отзывчивый форум (всё на английском).

Немного общей теории Самыми распространенными являются скрипты под расширение GreaseMonkey для браузера Firefox .
Подробную информацию по GreaseMonkey и написанию юзерскриптов под GreaseMonkey можно узнать на http://wiki.greasespot.net .
Так сложилось исторически, что данный браузер был (и остаётся по сей день) первым, в котором поддержка юзерскриптов была выполнена на высоком уровне.

Не все скрипты, написанные для GreaseMonkey, могут запускаться в других браузерах. Причина в криворукости том, что во многих скриптах используется GM API - набор javascript-функций, специфичных для GreaseMonkey.

Однако, проще всего писать юзерскрипты под браузер Google Chrome .
На это есть ряд причин:

  • Простым скриптам не нужна поддержка GM API (библиотека, доступная в GreaseMonkey)
  • Google Chrome, в отличие от Firefox+GreaseMonkey, имеет отличнейший дебаггер.
  • Сообщения об ошибках юзерскрипта в Firefox ужасны! Если вы не обладаете даром телепатии твердыми знаниями GreaseMonkey и javascript, написание юзерскрипта может превратится в муки!
  • Google Chrome не требует расширений для поддержки юзерскриптов. Интерфейс для удаления/отключения юзерскриптов доступен «из коробки».
  • Очевидные минусы Google Chrome:
  • Нет доступа к «родному» window.
  • Не поддерживается директива @ include метаданных. Директива @ match глючит, можно сказать, что она тоже не поддерживается.
  • Особенности юзерскриптов Код юзерскриптов может посмотреть любой желающий, вооруженный блокнотом.
    Базовые знания javascript позволяют отсечь угрозу установки шпионских и вредоносных скриптов простым анализом кода скрипта (придётся задействовать мозг).

    Все юзерскрипты запускаются после того, как загрузились все основные элементы страницы, но ещё не загрузились картинки. Можно сказать, что юзерскрипты грузятся по событию DOMContentLoaded .
    В любом случае, проверки на window.onload не нужны .

    Каждый браузер накладывает свои ограничения на исполнение юзерскриптов, но в целом юзерскрипты могут делать почти всё, что могут скрипты на странице.
    Чаще всего юзерскрипты используются для изменения интерфейса страницы или для добавления плюшек, блекджека и шлюх (юзерскрипты для социальных сетей).
    Бывают и продвинутые юзерскрипты, которые представляют собой самостоятельные программы (аукционные и игровые боты, плагины-помощники и т.д).

    Анатомия юзерскриптов Юзерскрипт - это текстовый файл с расширением user.js. В начале файла располагается блок метаданных - описание самого скрипта. После блока метаданных следует javascript-код, который и будет исполняться браузером.

    Рассмотрим тестовый скрипт, который показывает alert с текстом на определенной странице.
    // ==UserScript== // @name myUserJS // @description Мой самый первый юзерскрипт // @author Vasya Pupkin // @license MIT // @version 1.0 // @include http://userscripts.org/* // ==/UserScript== // Оборачиваем скрипт в замыкание, для кроссбраузерности (opera, ie) (function (window, undefined) { // нормализуем window var w; if (typeof unsafeWindow != undefined) { w = unsafeWindow } else { w = window; } // В юзерскрипты можно вставлять практически любые javascript-библиотеки. // Код библиотеки копируется прямо в юзерскрипт. // При подключении библиотеки нужно передать w в качестве параметра окна window // Пример: подключение jquery.min.js // (function(a,b){function ci(a) ... a.jQuery=a.$=d})(w); // не запускаем скрипт во фреймах // без этого условия скрипт будет запускаться несколько раз на странице с фреймами if (w.self != w.top) { return; } // дополнительная проверка наряду с @include if (/http:\/\/userscripts.org/.test(w.location.href)) { //Ниже идёт непосредственно код скрипта alert("Userscripts приветствует вас навязчивым окном."); } })(window);

    Важно: данный скрипт представляет собой оболочку для кроссбраузерных юзерскриптов. Этот же скрипт, но с английскими комментариями, можно стянуть с pastebin.com и использовать безнаказанно.

    В самом начале располагается блок метаданных (в виде комментария).
    // ==UserScript== // ... // ==/UserScript==
    Этот блок состоит из директив описания юзерскрипта. Ниже в таблице представлены основные директивы и их назначение.

    Важно: Все директивы, как и сам блок метаданных, могут отсутствовать.

    Директива Назначение
    @ name Название юзерскрипта.
    Это название будет отображаться в интерфейсе управления
    юзерскриптами. Если директива отсутствует, то название
    юзерскрипта будет таким же, как и название файла.
    @ description Описание юзерскрипта.
    Это описание будет отображаться в интерфейсе управления
    юзерскриптами.
    @ namespace Пространство имён.
    Определяет уникальность набора скриптов.
    Сюда можно вписать имя домена, принадлежащего вам. Или любую другую строку.
    Считайте, что это второе название скрипта. Обязательная директива для Trixie!
    @ author Имя автора.
    @ license Название лицензии, по которой распространяется юзерскрипт.
    @ version Номер версии юзерскрипта.
    К сожалению, механизма автообновления нету ни в одном браузере,
    поэтому номер версии - это просто цифры, которые отображаются в интерфейсе.
    @ include
    на которой нужно запускать юзерскрипт.
    Поддерживает вайлдкард * (применимо в GreaseMoneky, Opera, IE).
    Для каждого отдельного url нужно использовать отдельную директиву @ include.
    @ exclude Директива описания url страницы,
    на которой не нужно запускать юзерскрипт.
    Поддерживает вайлдкард * (применимо в GreaseMonkey, Opera, IE).
    Для каждого отдельного url нужно использовать отдельную директиву @ exclude.
    @ match Аналогично @ include, но с более жесткими ограничениями
    (применимо в GreaseMonkey старше 0.9.8, Google Chrome).
    Подробнее об ограничениях и формате директивы можно
    прочитать на этой странице .
    Для каждого отдельного url нужно использовать отдельную директиву @ match.

    Важно: Как показала практика, полагаться на директиву @ match в юзерскриптах не стоит.
    Google Chrome периодически отказывается учитывать @ match
    и запускает юзерскрипты на всех страницах.
    Для предотвращения такой ситуации в юзерскрипты,
    которые будут запускаться не только в Firefox,
    нужно добавлять код проверки адреса страницы (см. ссылку в коде юзерскрипта) .

    Важно: При отсутствии директив @ include или @ match, юзерскрипты будут запускаться на всех страницах .

    В нашем юзерскрипте использован ряд хитростей:

  • Для того, чтобы юзерскрипты имели одинаковое поведение и не загрязняли глобальную область видимости, код оборачивается в замыкание (см. в коде скрипта) .
  • Для правильного подключения библиотек внутри юзерскрипта и для обхода некоторых хитрых особеннойстей GreaseMonkey, необходимо «нормализовать» ссылку на глобальную область видимости window (см. в коде скрипта) .
  • Для того, чтобы юзерскрипт не запускался несколько раз на одной и той же странице, необходимо останавливать работу при запуске юзерскрипта во фреймах (см. в коде скрипта) .
  • Для того, чтобы юзерскрипт запускался только на нужных нам страницах, необходимо явно проверять url страницы (см. в коде скрипта) .
  • Благодаря такой структуре, юзерскрипт может быть относительно просто преобразован в букмарклет .
  • Результат Наш юзерскрипт готов к использованию!
    Нет, серьёзно, вы можете скопировать код юзерскрипта в файл, назвать его my.user.js, и закинуть полученный файл в браузер (используйте Chrome или Firefox с установленным GreaseMonkey).

    Конечно, наш юзерскрипт не обладает серьезными функциями, код выглядит страшным и малопривлекательным (для непосвященного человека). Но в итоге мы получили заготовку для кроссбраузерных юзерскриптов .
    Это значит, что юзерскрипт можно запустить практически в любом современном браузере!
    И это замечательно!

    Остаётся вопрос: как «раздать» наш скрипт пользователям (ведь мы писали скрипт не только для себя)?
    Варианты:

    • Зарегестрироваться на портале userscripts.org и загружать скрипты туда.
    • Завести репозиторий на code.google.com или github.com .
    • Создать свой простой сервис/сайт/страничку.
      Важно: Если хотите, чтобы у пользователей GreaseMonkey автоматически открывался диалог установки юзерскрипта, отдавайте файл прямиком с файловой системы (url файла должен заканчиваться на.user.js). В противном случае пользователь увидит исходный код скрипта и панель с кнопкой «установить». Эта кнопка не работает!
    Рецепт для непрограммистов (похожими методами пишется ~70% скриптов):
  • Придумываем, что будет делать наш юзерскрипт (перекрашивать ссылки, например)
  • Берём шаблон из статьи
  • Сохраняем в файл my.user.js
  • Удаляем строку с alert(...) .
  • Идём на форум (userscripts.org или любой форум по javascript).
  • Спамим, флудим и достаём людей вопросами «как перекрашивать ссылки», «дайте код» и т.д.
  • Изменяем метаданные и проверку url страницы на нужные нам.
  • Вставляем полученный на форуме код в юзерскрипт.
  • Сохраняем файл.
  • PROFIT!!1!
  • Полезные ссылки:

    Пишем скрипты в Linux (обучение на примерах)

    ———————————————————————————-

    1. Введение

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

    Зачем нужны скрипты
    Во-первых, администрирование linux-сервера в той или иной степени сводится к систематическому выполнению одних и тех же команд. Причем не обязательно, чтобы эти команды выполнял человек. Их можно запрограммировать на выполнение машиной.
    Во-вторых, даже просто выполнение обычной задачи, которая (вдруг) составляет 20-1000… однообразных операций ГОРАЗДО проще реализовать в скрипте.

    Что такое скрипт
    Скрипт — набор инструкций, которые должен в определенном порядке и в определенное время выполнить компьютер. Инструкциями могут быть как внутренние команды оболочки (циклы, условия, обработка текстовой информации, работа с переменными окружения и прочее), так и любая программа, выполняемая нами в консоли с необходимыми параметрами.

    Как писать скрипт
    В нашем случае скрипт будет представлять из себя текстовый файл с атрибутами выполнения. Если файл сценария начинается с последовательности #!, которая в мире UNIX называется sha-bang, то это указывает системе какой интерпретатор следует использовать для исполнения сценария. Если это трудно понять, то просто запомните, что все скрипты мы будем начинать писать именно со строчки #!/bin/bash или #!/bin/sh, а далее пойдут команды и комментарии к ним.

    Напутствие
    Я Вам искренне советую писать как можно больше комментариев чуть ли ни к каждой строчке в скрипте. Пройдет время и Вам понадобится изменить или модернизировать написанный когда-то скрипт. Если не помнишь или не понимаешь, что написано в скрипте, то становится сложно его изменять, проще писать с нуля.

    Какие скрипты могут нам понадобиться:

      устанавливающий правила файервола при загрузке системы.
      запускающий в определенное время (лучше каждую ночь) программу, которая сканирует логи прокси-сервера и выдает удобный web-отчет по количеству скачанного трафика.
      отправляющий нам на почту информацию о том, что кто-то получил доступ к нашему серверу по ssh, время подключения и адрес клиента.

    О методике написания скриптов
    Создаем текстовый файл, редактируем его, устанавливаем права на выполнение, запускаем, смотрим ошибки, исправляем, запускаем, смотрим ошибки…
    Когда все вылизано и работает правильно, ставим его в автозагрузку либо в планировщик на определенное время.

    ———————————————————————————-

    2. Обучение написанию сценариев на внутреннем языке BASH
    оригинал: https://www.linuxconfig.org/Bash_scripting_Tutorial

    Это руководство предполагает отсутствие предварительных знаний о методике написания сценариев (далее скриптов) с помощью внутреннего языка Bash. С помощью данного руководства вы обнаружите в скором времени, что написание скриптов очень простая задача. Давайте начнем наше обучение с простого сценария, выполняющего вывод строки «Hello World!» (в перев. с англ. — Всем привет!)

    1. Сценарий «Всем привет»
    Вот ваш первый пример bash-скрипта:

    #!/bin/bash
    echo «Hello World»

    Переходим в директорию, содержащую наш файл hello_world.sh и делаем его исполняемым:

    Код: Выделить всё $ chmod +x hello_world.sh

    Запускаем скрипт на выполнение

    Код: Выделить всё $ ./hello_world.sh

    2. Простой архивирующий bash-скрипт

    #!/bin/bash
    tar -czf myhome_directory.tar.gz /home/user

    Код: Выделить всё $ ./backup.sh

    $ du -sh myhome_directory.tar.gz
    41M myhome_directory.tar.gz

    3. Работа с переменными
    В данном примере мы объявляем простую переменную и выводим её на экран с помощью команды echo

    #!/bin/bash
    STRING=»HELLO WORLD!!!»
    echo $STRING

    Код: Выделить всё $ ./hello_world.sh
    HELLO WORLD!!!

    Наш архивирующий скрипт с переменными:

    #!/bin/bash
    OF=myhome_directory_$(date +%Y%m%d).tar.gz
    IF=/home/user
    tar -czf $OF $IF

    Код: Выделить всё $ ./backup.sh
    tar: Removing leading "\" from member names
    $ du -sh *tar.gz
    41M myhome_directory_20100123.tar.gz

    3.1 Глобальные и локальные переменные

    #!/bin/bash
    # Объявляем глобальную переменную
    # Такая переменная может использоваться в любом месте этого скрипта
    VAR=»global variable»
    function bash {
    # Объявляем локальную переменную
    # Такая переменная действительна только для функции, в которой её объявили
    local VAR=»local variable»
    echo $VAR
    }
    echo $VAR
    bash
    # Обратите внимание, что глобальная переменная не изменилась
    echo $VAR

    Код: Выделить всё $ ./variables.sh
    global variable
    local variable
    global variable

    4. Передаем аргументы в скрипт

    #!/bin/bash
    # Используйте предопределенные переменные для доступа к аргументам
    # Выводим аргументы на экран
    echo $1 $2 $3 ‘ -> echo $1 $2 $3’

    #Мы так же можем получить доступ к аргументам через специальный массив args=(«$@»)
    # Выводим аргументы на экран
    echo ${args} ${args} ${args} ‘ -> args=(«$@»); echo ${args} ${args} ${args}’

    # Используйте переменную $@ для вывода всех аргументов сразу
    echo $@ ‘ -> echo $@’

    Используйте переменную $# для вывода количества переданный в скрипт аргументов
    echo Number of arguments passed: $# ‘ -> echo Number of arguments passed: $#’

    Код: Выделить всё $ ./arguments.sh Bash Scripting Tutorial
    Bash Scripting Tutorial -> echo $1 $2 $3
    Bash Scripting Tutorial -> args=("$@"); echo ${args} ${args} ${args}
    Bash Scripting Tutorial -> echo $@
    Number of arguments passed: 3 -> echo Number of arguments passed: $#

    5. Выполнение в скрипте команд оболочки

    #!/bin/bash
    # используйте обратные кавычки » ` ` » для выполнения команды оболочки
    echo `uname -o`
    # теперь попробуем без кавычек
    echo uname -o

    Код: Выделить всё $ uname -o
    GNU/Linux
    $ ./bash_backtricks.sh
    GNU/Linux
    uname -o

    Как видим, во втором случае вывелась сама команда, а не результат её выполнения

    6. Читаем пользовательский ввод (интерактивность)

    #!/bin/bash
    echo -e «Hi, please type the word: \c »
    read word
    echo «The word you entered is: $word»
    echo -e «Can you please enter two words? »
    read word1 word2
    echo «Here is your input: \»$word1\» \»$word2\»»
    echo -e «How do you feel about bash scripting? »
    # read command now stores a reply into the default build-in variable $REPLY
    read
    echo «You said $REPLY, I’m glad to hear that! »
    echo -e «What are your favorite colours ? »
    # -a makes read command to read into an array
    read -a colours
    echo «My favorite colours are also ${colours}, ${colours} and ${colours}:-)»

    Код: Выделить всё $ ./read.sh
    Hi, please type the word: something
    The word you entered is: something
    Can you please enter two words?
    Debian Linux
    Here is your input: "Debian" "Linux"
    How do you feel about bash scripting?
    good
    You said good, I"m glad to hear that!
    What are your favorite colours ?
    blue green black
    My favorite colours are also blue, green and black:-)

    7. Использование ловушки

    #!/bin/bash
    # объявляем ловушку
    trap bashtrap INT
    # очищаем экран
    clear;
    # функция ловушки выполняется, когда пользователь нажимает CTRL-C:
    # На экран будет выводиться => Executing bash trap subrutine !
    # но скрипт будет продолжать выполняться
    bashtrap()
    {
    echo «CTRL+C Detected !…executing bash trap !»
    }
    # скрипт будет считать до 10
    for a in `seq 1 10`; do
    echo «$a/10 to Exit.»
    sleep 1;
    done
    echo «Exit Bash Trap Example!!!»

    Код: Выделить всё $ ./trap.sh
    1/10
    2/10
    3/10
    4/10
    5/10
    6/10

    7/10
    8/10
    9/10
    CTRL+C Detected !...executing bash trap !
    10/10
    Exit Bash Trap Example!!!

    Как видим, сочетание клавишь Ctrl-C не остановило выполнение скрипта.

    8. Массивы
    8.1 Объявляем простой массив

    #!/bin/bash
    # Объявляем простой массив с 4 элементами
    ARRAY=(‘Debian Linux’ ‘Redhat Linux’ Ubuntu Linux)
    # Получаем количество элементов в массиве
    ELEMENTS=${#ARRAY[@]}

    # выводим в цикле каждый элемент массива
    for ((i=0;i /dev/null удобна, если вы архивируете большое количество файлов. В этом случае их имена и полный путь к ним не выводятся на консоль.

    Следующий шаг должен предусмотреть подсказки пользователю как пользоваться скриптом, если он допустит какие-то ошибки.

    Например, эта конструкция

    If [ $# -lt "$MAXPARAMS" ];
    then
    echo

    echo
    exit 0
    fi

    подскажет, что пользователь указал недостаточное количество аргументов командной строки. If [условие]...fi задает условную конструкцию. $# -lt "$MAXPARAMS" проверяет введенное количество параметров и если это число окажется меньше MAXPARAMS, то пользователю будет выдано сообщение об ошибочном вводе. Exit 0 заставит скрипт прекратить работу без указания кода ошибки. Аналогично проверяется превышение допустимого числа параметров, только вместо ls (less then - меньше, чем), необходимо указать gt (greater then - больше, чем). Теперь, когда основные моменты скрипта разъяснены, можно переходить к полной его версии:

    #!/bin/bash
    # Описание:
    #+ Делает резервную копию всех файлов в указанной директории
    #+ в "tarball" (архив tar.gz).
    #+ Использование:
    #+ sh backup.sh имя_архива папка-источник папка-назначение
    #+

    # Максимальное количество параметров командной строки
    MAXPARAMS=3

    if [ $# -lt "$MAXPARAMS" ];
    then
    echo
    echo "Использование: sh `basename $0` имя_архива папка-источник папка-назначение"
    echo
    exit 0
    fi

    if [ $# -gt "$MAXPARAMS" ];
    then
    echo
    echo "Для этого скрипта нужно только $MAXPARAMS аргументов командной строки!"
    echo
    exit 0
    fi

    # Переменные, которые мы используем в скрипте
    BACKUPFILE=$1-backup-$(date +%m-%d-%Y)
    archive=$BACKUPFILE
    BACKUPDIR=$2
    ARCHIVEDIR=$3

    # Проверяем, есть ли папка-источник и папка-назначение
    if [ ! -e $BACKUPDIR ];
    then
    echo
    echo "\"$BACKUPDIR\" не существует!"
    echo
    exit 0
    fi

    if [ ! -e $ARCHIVEDIR ];
    then
    echo
    echo "\"$ARCHIVEDIR\" не существует, создаем..."
    mkdir $ARCHIVEDIR
    echo "Готово."
    fi

    # Проверяем, есть ли архивы в источнике и назначении.
    cd $ARCHIVEDIR
    if [ -e $archive.tar.gz ];
    then rm $archive.tar.gz
    fi

    cd $BACKUPDIR
    if [ -e $archive.tar.gz ];
    then rm $archive.tar.gz
    fi

    # Главная часть скрипта...
    echo "Делаем резервную копию \"$BACKUPDIR\" в файл \"$archive.tar.gz\"..."
    find . -type f -print0 | xargs -0 tar rvf "$archive.tar" > /dev/null
    gzip $archive.tar
    echo "\"$BACKUPDIR\" была успешно заархивирована в файл \"$archive.tar.gz\"."

    # Перемещаем архив в папку ARCHIVEDIR
    echo "Перемещаем архив \"$archive.tar.gz\" в папку \"$ARCHIVEDIR\"."
    mv $archive.tar.gz $ARCHIVEDIR/$archive.tar.gz
    echo "Готово."

    Надеюсь, основные моменты я прокомментировал достаточно подробно. Если у вас возникли какие-либо вопросы, то вы можете связаться со мной по адресу [email protected] Рекомендую также замечательную книгу Advanced Bash-Scripting Guide Менделя Купера (Mendel Cooper), которая очень помогла мне в свое время, когда я только знакомился со скриптами. Удачного программирования.

    P.S. Большое спасибо mar за ее замечания и советы.

    Как написать скрипт продаж? Таким вопросом задается, наверное, каждый, кто работает в продажах. И это неудивительно — ведь хороший скрипт продаж позволит Вам быстрее и легче привлекать клиентов, поможет менеджерам преодолевать возражения и отвечать на вопросы потенциальных покупателей. Плюсы от использования скрипта очевидны.

    Но есть и обратная сторона.

    Разработка скрипта продаж — занятие не простое. В статье «3 способа написать и оформить скрипт продаж » я уже делился с Вами своим мнением по поводу подготовки скрипта (электронный формат, бумажный формат).

    Сегодня я хочу предложить Вам схему создания скрипта — 9 шаговый алгоритм написания скрипта с нуля (речь идет про написание скрипта холодного звонка. Для других видов звонков алгоритм будет аналогичным с небольшими корректировками). Когда я создаю скрипты продаж для корпоративных клиентов, я сам опираюсь на этот алгоритм.

    Я подготовил алгоритм в формате PDF. Скачать его можно бесплатно, разблокировав доступ через (нажать на любую кнопку соцсетей).

    Более подробно каждый шаг я описал в этих видео:

    Как написать скрипт продаж: шаг 1-5 (видео)

    Давайте рассмотрим основные шаги при написании скрипта.

    1. Начни с сегментации

    Этот шаг (к сожалению, незнакомый большинству) позволяет на начальном этапе разделить базу наших потенциальных клиентов на более перспективных и интересных для нас и на менее интересных. На этом шаге важно определить критерии сегментации для своей ситуации. Например, если я продаю тренинги продаж, то для меня клиент с наличием отдела продаж в компании и необученными сотрудниками будет гораздо интереснее, чем клиент вообще без отдела продаж. Таким образом мы для себя выделяем категории клиентов А, B, C и далее по необходимости для Вашего бизнеса. Более подробно этот важный шаг я разбирал на онлайн-тренинг (здесь можно посмотреть отчет с тренинга), но думаю логика сегментации Вам понятна.

    2. Определи целевое действие

    На этом шаге важно спланировать для каждого сегмента клиентов те целевые действия, которые будут нам выгодны. Например, с клиентами категории А мы готовы встречаться на территории клиента (т.к. они наиболее перспективные, интересные для нас. Мы готовы инвестировать свое время в таких клиентов), а с клиентами категории С, к примеру, можно ограничиться подпиской на рассылку.

    3. Определи ЛПР

    ЛПР — лицо, принимающее решение. Кто в Вашем случае определяет решение о работе с Вами? Часто менеджеры напролом пробиваются к руководителю, не понимая, что решение по их вопросу в компании, вероятно принимает другой человек. Это важный шаг, который напрямую влияет на наполнение нашего скрипта эффективными речевыми оборотами.

    4. Наполни таргет-лист

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

    5. Продумай выход на ЛПР

    Что Вы скажете секретарю, чтобы он Вас соединил с руководителем. Мне обычно достаточно 2-3 техники чтобы обойти почти любого секретаря. В курсе 10 звонков — 10 продаж я о таких техниках рассказываю.

    6. Определи идеальную линию разговора с ЛПР

    Представьте, что Ваш разговор проходит идеально гладко. Клиент не возражает. Подумайте, с чего Вы начнете беседу, как утеплите контакт, как будете аргументировать свою позицию. Я обычно выделяю 4 составляющих в этом блоке, о которых расскажу в другой статье (техника «ВУУЗ»).

    7. Добавь ветвистость

    Скрипт продаж подразумевает разные варианты поведения клиентов. Он может согласиться с Вами сразу (в таком случае сработает Ваша идеальная линия разговора), либо будет отказывать и возражать. На 7 шаге важно предусмотреть возможные отказы и отговорки клиента. Я обычно выделяю возражения универсальные (они могут появиться на любом узле скрипта) и узловые (они могут появиться только на определенном узле. Например, во время установления контакта). Преодолеть любые возражения Вам поможет курс . Там есть все необходимые приемы для обработки любых возражений.

    8. Автоматизируй скрипт

    На этом шаге я рекомендую автоматизировать скрипт продаж. Вы можете использовать заготовки для автоматизации (например, я использовал экселевский шаблон в курсе ), либо специальные сервисы для автоматизации скриптов (мне нравится ).

    9. Улучшай!

    Следите за конверсией каждого узла, скрипта в целом, пробуйте разные ответы на возражения и способы аргументации. И у Вас получится убойный скрипт продаж!

    P.s. Более подробно технологию создания скриптов я разобрал на онлайн-тренинге (точнее — воркшопе) Скрипты продаж, которые выстреливают . Посмотрите подробности о том, как прошло мероприятие, какие выводы я сделал для себя в ходе общения с участниками. Возможно, и для Вас и Вашей ситуации это будет полезным.

    Полезные ссылки:
    • Посетите бесплатный вебинар , чтобы узнать о наиболее эффективных стратегиях телефонных продаж в Вашем бизнесе
    • Чек-лист продающего звонка из 14 шагов ()
    • Подписывайтесь на канал Youtube «Пора расти» и будем развиваться и расти вместе
    • Прокачайте свои навыки продаж . Пожалуй, одно из лучших бюджетных решений в интернете, которое поможет Вам и Вашим сотрудникам увеличить продажи!
    • Скрипты продаж: 9 шагов для создания скрипта с…
    • Обход секретаря. 4 техники для скрипта продаж с…




    

    2024 © gtavrl.ru.