Основы языка JScript - написание WSH скриптов. Написание скриптов на Bash

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

  • Размещение 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 предназначен для отображения текста.
  • Имеется возможность включать в код РНР большие блоки текста
  • В РНР используются три вида комментариев: /* … */, // и #.
  • Имя переменной предваряется знаком доллара $, начинается с буквы или знака подчеркивания, после которого может следовать произвольное количество букв, цифр или знаков подчеркивания.

Любой начинающий системный администратор Linux рано или поздно сталкивается с таким понятием, как “скрипт ”, будь то один из загрузочных скриптов вроде /etc/rc.d/rc или написанный разработчиком ПО скрипт конфигурирования configure . В данной статье я постараюсь показать, что написание скриптов на shell не является чем-то из ряда вон выходящим и вполне под силу даже новичку в мире Linux.

Начнем с того, что разберем, что же скрывается за английскими терминами shell и скрипт . Shell , или оболочка, как этот термин иногда переводят - это командный интерпретатор, интерфейс между пользователем и операционной системой, ее ядром. Но, кроме этого, это еще и мощный язык программирования и написания сценариев. Он содержит свои служебные слова и управляющие конструкции и позволяет писать на нем программы. Такая программа на языке сценариев, называемая скриптом , может объединять в себе системные вызовы и команды операционной системы, а также внешние утилиты, создавая мощный инструмент для системного администрирования.

Одной из задач системного администрирования является резервное копирование важной информации. Поэтому давайте рассмотрим пример скрипта, реализующего back-up информации.

Начало начал

Итак, прежде всего, нам необходимо разобраться в структуре скрипта. Она не представляет собой ничего сложного. По большому счету, простейший скрипт - просто перечисление системных команд. Например:

Echo This is just example
whoami
uname -a

Эти команды объединены в одном файле. Но shell должен знать, что он должен этот файл обработать, а не просто прочесть его содержимое. Для этого служит специальная конструкция: #!

Эта конструкция называется «sha-bang ». Вообще-то, # задает комментарий, но в данном случает sha-bang означает, что после нее пойдет путь к обработчику скрипта. Напрмер:

#!/bin/bash
#!/bin/sh
#!/usr/bin/perl

Мы остановимся на Bash, Bourne-Again shell. Это shell устанавливается по умолчанию практически во всех Linux-системах, и /bin/sh ссылается на него. Об окончании скрипта говорит служебное слово exit.

Вооружившись этими знаниями, напишем наш первый скрипт:

#!/bin/bash
echo Простой скрипт # Команда echo выводит сообщение на экран
echo Вы:
whoami # whoami показывает имя зарегистрированного пользователя
echo Ваша система стартовала
uptime # uptime показывает время включения машины
echo Сегодня
date # date показывает текущую дату и время
echo Пока все
exit

Сохраним этот файл под именем tutor1.sh. Выполним команду чтобы сделать скрипт исполняемым.

Chmod +rx tutor1.sh

Результатом выполнения скрипта будет:

Voland@superstar:~/Doc/Open Source$ ./tutor1.sh
Простой скрипт
Вы:
voland
Ваша система стартовала
14:38:46 up 1:48, 2 users, load average: 0.47, 0.43, 0.41
Сегодня
Вск Фев 26 14:38:46 MSK 2006
Пока все

Переходим к более серьезному.

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

Перво-наперво, необходимо определить - резервную копию чего мы будем делать. Поэтому наш скрипт должен уметь работать с командной строкой. Аргументы командной строки задаются после имени скрипта через пробел: somescript arg1 arg2 arg3. Скрипт воспринимает аргументы по номерам их следования, поэтому мы будем использовать конструкции вида $номер_аргумента, т.е. $1, $2, $3. $ - это символ подстановки, который нам понадобится и при работе с переменными. Переменные в скрипте задаются в виде имя_переменной=значение. Мы будем использовать переменные MAXPARAMS для определения максимального количества параметров командной строки, BACKUPFILE для задания имени архива, BACKUPDIR для папки, резервную копию которой мы будем делать и ARCHIVEDIR для папки, куды мы поместим архив. Самой главной частью скрипта будут команды поиска и архивации всех найденных файлов и папок в указанной:

Find . -type f -print0 | xargs -0 tar rvf "$archive.tar" > /dev/null
gzip $archive.tar

Давайте разберемся, что же эти команды делают. find ищет в текущем каталоге (об этом говорит первый аргумент ".") все файлы и выдает полный путь к ним (print0). Эти пути перенаправляюся команде tar, которая собирает все файлы в один. Затем командой gzip мы архивируем получившийся tar-файл. Команда > /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 за ее замечания и советы.

Хорошие скрипты продаж на 80% увеличивают вероятность успешного закрытия сделки, а следствие . Рассказываем об алгоритме их построения, приводим примеры результативных скриптов и показываем, какое it-решение упростит процесс их использования, тестирования, изменения и обучения менеджеров.

Любая продажа – это общение с клиентом. И этот процесс обязательно должен быть регламентирован, протестирован и желательно автоматизирован. Для отличных продаж вам нужна схема разговора — последовательность вопросов/предложений менеджера и возможных вариантов ответа клиентов.

Зачем нужны скрипты продаж:

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

    Шаг 1. Подготовка

    Цель звонка . В зависимости от того, что вы продаете, решите, какого действия или реакции должен добиться менеджер от клиента. Не все товары и услуги продаются сразу и по телефону. В качестве цели вы можете добиться визита в ваш офис, чтобы более подробно раскрыть преимущества или познакомить с командой. Вы можете пригласить на экскурсию по объектам, если продаете недвижимость. Можно позвать клиента на ваш вебинар или конференцию. Или для начала вам будет достаточно, чтобы он оставил вам электронную почту и номер мобильного телефона.

    Портрет клиента. Определите, кто ваша целевая аудитория: мужчины/женщины, возраст, доход, сфера деятельность, вовлеченность в социальные сети и т.д. Далее оцените, это лицо принимающее решение в компании или нет, можно ли дозвониться клиенту напрямую или только через секретаря.

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

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

    Например, вы продаете сразу несколько объектов недвижимости или квартиры/дома с разной планировкой. Ваши менеджеры должны четко ориентироваться, какой из объектов может лучше подойти для конкретного покупателя. Выяснив, состав его семьи, возраст детей, пожелание к инфраструктуре, близости к центру города, он должен знать, какой наилучший вариант нужно предложить. И организовать просмотр объекта, который максимально отвечает требованиям клиента.

    Свобода действий. Определите, насколько гибким может быть ваш скрипт продаж. Есть бизнесы с сильными стандартами работы (банки, страховые компании, телекоммуникационные компании). Их менеджеры, как правило, предлагают конкретную услугу. Скрипт их разговора не позволяет сделать шаг вправо или влево.

    А есть другой подход. Когда нужно подстроиться под ответы собеседника. Там нужна «рыба» скрипта продаж, чтобы менеджер не отклонялся от цели и не забыл задать самые важные вопросы. Но при этом, у него есть свобода в словах и предложении продукта.

    Шаг 2. Составление скрипта

    Подход к написанию скрипта продаж.

    Кто и как может создать скрипт:

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

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

    Текущий опыт. Составьте скрипт продаж из накопленного опыта в вашей компании. Попросите менеджера обзвонить несколько десятков клиентов, запишите звонки. Потом прослушайте их и выпишите фразы, которые помогли двигаться к вашей цели. Особое внимание уделите стоп-словам – тем, которые лучше не употреблять. И на основе удачных фраз сконструируйте скрипт.

    Структура скрипта продаж. Она должна строиться по классической схеме продаж: представление – выяснение потребности – презентация продукта – – завершение сделки.

    Какие фразы помогают начать разговор:

    • Вы оставили заявку на нашем сайте в 15.00
    • Сейчас вы находитесь на странице с таким-то нашим продуктом. Давайте помогу во всем разобраться
    • Я обещал вам позвонить, когда вы откроете мое коммерческое предложение. Вижу, что открыли, и вот звоню (читайте, как составить коммерческое предложение с wow-эффектом)
    • Мне рекомендовал позвонить вам Иванов Иван Иванович
    • Вы оставили свои контакты на нашем стенде на такой-то выставке

    Какие фразы помогают выяснить потребности:

    • Что для вас важно?
    • Что для вас неприемлемо?
    • Какие ваши предпочтения?
    • Выберите из перечисленных мною вариант, который бы вас устроили?
    • Кто будет принимать окончательное решение? Нужно ли вам с кем- то посоветоваться?
    • На какой бюджет вы рассчитываете?
    • Если мы поступим так, вам будет удобно?

    Какие фразы помогают продвинуться к завершению сделки:

    • Что нужно сделать, чтобы наша сделка состоялась?
    • Какие условия, помогли бы вам сейчас принять решение?
    • Какой пункт договора нужно исключить, чтобы вы его подписали?
    • Какие условия оплаты вы бы хотели получить, чтобы сейчас принять решение?
    • Давайте договоримся о следующем звонке/встрече?

    Нужны ли эмоции. Безусловно! Человек по телефону должны ощущать ваше отношение к нему. Для этого можно использовать слова чувств: «Мы рады вас слышать», «Это отличное предложение», «Мне кажется, вам нравится мое предложение», «Вы абсолютно правы». По сути во время разговора менеджер должен улыбаться и чувствовать собеседника.

    Длина скрипта продаж. Это зависит от цели разговора. Если ваша задача продать, то вы можете общаться пока не достигнете цели. Если ваша цель — промежуточный этап (назначение встречи), то не занимайте у потенциального клиента более 5 минут.

    Шаг 3. Тестирование скрипта

    Вы написали скрипт продаж, теперь его надо проверить и скорректировать. Сначала сценарий разговора можно проверить на самих менеджерах, потом на небольших клиентах. «Шлифовка» скрипта – это большой и трудоемкий процесс. Он может занять до 1,5 месяцев.

    Чтобы ничего не упустить, используйте прослушку звонков менеджеров. Мы советуем слушать хотя бы по одному разговору каждого менеджера в день (читайте, как увеличить продажи благодаря прослушке звонков). Обращайте внимание на ряд моментов:

  • Разговаривают ли менеджеры по скрипту
  • Движется ли разговор к поставленной цели по скрипту
  • Все ли варианты ответов/возражений клиента учтены в скрипте
  • Удалось ли удержать внимание клиента
  • Какие фразы или слова привели к срыву переговоров
  • После этого исправляйте и улучшайте скрипт. Помните, что идеального скрипта не бывает. Любая новая фраза может улучшать или ухудшать конверсию. Работайте над скриптом, а скрипт будет работать над ростом ваших продаж.

    Чтобы увеличить эффективность , вы можете использовать сервис HyperScript. Он поможет:

  • Создавать и редактировать ваш скрипт в удобном визуальном редакторе, а не печатать на бумаге для каждого менеджера
  • Схема продаж

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

    Актуальная версия скрипта продаж

    3. Предоставить сотрудникам удобный интерфейс работы со скриптом в режиме реального времени – на каждый ответ клиента автоматически отображается то, что нужно говорить менеджеру.

    Быстрая корректировка скрипта

    4. Автоматически измерять и сравнивать конверсию скриптов.

    5. Автоматически измерять и сравнивать конверсию операторов.

    Конверсия

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

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

    Если вы уже более опытный пользователь, то, наверное, часто выполняете различные задачи через терминал. Часто встречаются задачи, для которых нужно выполнять несколько команд по очереди, например, для обновления системы необходимо сначала выполнить обновление репозиториев, а уже затем скачать новые версии пакетов. Это только пример и таких действий очень много, даже взять резервное копирование и загрузку скопированных файлов на удаленный сервер. Поэтому, чтобы не набирать одни и те же команды несколько раз можно использовать скрипты. В этой статье мы рассмотрим написание скриптов на Bash, рассмотрим основные операторы, а также то как они работают, так сказать, bash скрипты с нуля.

    Скрипт или как его еще называют - сценарий, это последовательность команд, которые по очереди считывает и выполняет программа-интерпретатор, в нашем случае это программа командной строки - bash.

    Скрипт - это обычный текстовый файл, в котором перечислены обычные команды, которые мы привыкли вводить вручную, а также указанна программа, которая будет их выполнять. Загрузчик, который будет выполнять скрипт не умеет работать с переменными окружения, поэтому ему нужно передать точный путь к программе, которую нужно запустить. А дальше он уже передаст ваш скрипт этой программе и начнется выполнение.

    Простейший пример скрипта для командной оболочки Bash:

    !/bin/bash
    echo "Hello world"

    Утилита echo выводит строку, переданную ей в параметре на экран. Первая строка особая, она задает программу, которая будет выполнять команды. Вообще говоря, мы можем создать скрипт на любом другом языке программирования и указать нужный интерпретатор, например, на python:

    !/usr/bin/env python
    print("Hello world")

    Или на PHP:

    !/usr/bin/env php
    echo "Hello world";

    В первом случае мы прямо указали на программу, которая будет выполнять команды, в двух следующих мы не знаем точный адрес программы, поэтому просим утилиту env найти ее по имени и запустить. Такой подход используется во многих скриптах. Но это еще не все. В системе Linux, чтобы система могла выполнить скрипт, нужно установить на файл с ним флаг исполняемый.

    Этот флаг ничего не меняет в самом файле, только говорит системе, что это не просто текстовый файл, а программа и ее нужно выполнять, открыть файл, узнать интерпретатор и выполнить. Если интерпретатор не указан, будет по умолчанию использоваться интерпретатор пользователя. Но поскольку не все используют bash, нужно указывать это явно.

    Чтобы выполните:

    chmod ugo+x файл_скрипта

    Теперь выполняем нашу небольшую первую программу:

    ./файл_скрипта

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

    Переменные в скриптах

    Написание скриптов на Bash редко обходится без сохранения временных данных, а значит создания переменных. Без переменных не обходится ни один язык программирования и наш примитивный язык командной оболочки тоже.

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

    Например, объявим переменную string:

    string="Hello world"

    Значение нашей строки в кавычках. Но на самом деле кавычки не всегда нужны. Здесь сохраняется главный принцип bash - пробел - это специальный символ, разделитель, поэтому если не использовать кавычки world уже будет считаться отдельной командой, по той же причине мы не ставим пробелов перед и после знака равно.

    Чтобы вывести значение переменной используется символ $. Например:

    Модифицируем наш скрипт:

    !/bin/bash
    string1="hello "
    string2=world
    string=$string1$string2
    echo $string

    И проверяем:

    Bash не различает типов переменных так, как языки высокого уровня, например, С++, вы можете присвоить переменной как число, так и строку. Одинаково все это будет считаться строкой. Оболочка поддерживает только слияние строк, для этого просто запишите имена переменных подряд:

    !/bin/bash
    string1="hello "
    string2=world
    string=$string1$string2\ and\ me
    string3=$string1$string2" and me"
    echo $string3

    Проверяем:

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

    Переменные и вывод команд

    Переменные не были бы настолько полезны, если бы в них невозможно было записать результат выполнения утилит. Для этого используется такой синтаксис:

    $(команда )

    С помощью этой конструкции вывод команды будет перенаправлен прямо туда, откуда она была вызвана, а не на экран. Например, утилита date возвращает текущую дату. Эти команды эквивалентны:

    Понимаете? Напишем скрипт, где будет выводиться hello world и дата:

    string1="hello world "
    string2=$(date)

    string=$string1$string2

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

    Параметры скрипта

    Не всегда можно создать bash скрипт, который не зависит от ввода пользователя. В большинстве случаев нужно спросить у пользователя какое действие предпринять или какой файл использовать. При вызове скрипта мы можем передавать ему параметры. Все эти параметры доступны в виде переменных с именами в виде номеров.

    Переменная с именем 1 содержит значение первого параметра, переменная 2, второго и так далее. Этот bash скрипт выведет значение первого параметра:

    !/bin/bash
    echo $1

    Управляющие конструкции в скриптах

    Создание bash скрипта было бы не настолько полезным без возможности анализировать определенные факторы, и выполнять в ответ на них нужные действия. Это довольно-таки сложная тема, но она очень важна для того, чтобы создать bash скрипт.

    В Bash для проверки условий есть команда Синтаксис ее такой:

    if команда_условие
    then
    команда
    else
    команда
    fi

    Эта команда проверяет код завершения команды условия, и если 0 (успех) то выполняет команду или несколько команд после слова then, если код завершения 1 выполняется блок else, fi означает завершение блока команд.

    Но поскольку нам чаще всего нас интересует не код возврата команды, а сравнение строк и чисел, то была введена команда [[, которая позволяет выполнять различные сравнения и выдавать код возврата зависящий от результата сравнения. Ее синтаксис:

    [[ параметр1 оператор параметр2 ]]

    Для сравнения используются уже привычные нам операторы ,=,!= и т д. Если выражение верно, команда вернет 0, если нет - 1. Вы можете немного протестировать ее поведение в терминале. Код возврата последней команды хранится в переменной $?:

    Теперь объединением все это и получим скрипт с условным выражением:

    !/bin/bash
    if [[ $1 > 2 ]]
    then
    echo $1" больше 2"
    else
    echo $1" меньше 2 или 2"
    fi

    Конечно, у этой конструкции более мощные возможности, но это слишком сложно чтобы рассматривать их в этой статье. Возможно, я напишу об этом потом. А пока перейдем к циклам.

    Циклы в скриптах

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

    Первым рассмотрим цикл for. Вот его синтаксис:

    for переменная in список
    do
    команда
    done

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

    Например, переберем пять цифр:

    for index in 1 2 3 4 5
    do
    echo $index
    done

    Или вы можете перечислить все файлы из текущей директории:

    for file in $(ls -l); do echo "$file"; done

    Как вы понимаете, можно не только выводить имена, но и выполнять нужные действия, это очень полезно когда выполняется создание bash скрипта.

    Второй цикл, который мы рассмотрим - это цикл while, он выполняется пока команда условия возвращает код 0, успех. Рассмотрим синтаксис:

    while команда условие
    do
    команда
    done

    Рассмотрим пример:

    !/bin/bash
    index=1
    while [[ $index < 5 ]]
    do
    echo $index
    let "index=index+1"
    done

    Как видите, все выполняется, команда let просто выполняет указанную математическую операцию, в нашем случае увеличивает значение переменной на единицу.

    Хотелось бы отметить еще кое-что. Такие конструкции, как while, for, if рассчитаны на запись в несколько строк, и если вы попытаетесь их записать в одну строку, то получите ошибку. Но тем не менее это возможно, для этого там, где должен быть перевод строки ставьте точку с комой ";". Например, предыдущий цикл можно было выполнить в виде одной строки:

    index=1; while [[ $index < 5 ]]; do echo $index; let "index=index+1"; done;

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

    Выводы

    Теперь вы понимаете основы создания скрипта в linux и можете написать нужный вам скрипт, например, для резервного копирования. Я пытался рассматривать bash скрипты с нуля. Поэтому далеко не все аспекты были рассмотрены. Возможно, мы еще вернемся к этой теме в одной из следующих статей.

    Сегодня поговорим об очень полезном компоненте операционной системы Windows - это Windows Script Host , если быть конкретней, то о языке Jscript, на котором можно писать эти самые WSH скрипты.

    Начнем мы с небольшой теории, так как мы еще не затрагивали Windows Script Host.

    Что такое Windows Script Host?

    Windows Script Host – сервер выполнения сценариев (скриптов ) на таких языках как VBScript и JScript. WSH разработан компанией Microsoft и он является компонентом операционной системы Windows начиная с Windows 98.

    Первоначально для администрирования использовались только bat-файлы , но их возможности ограничены (хотя также очень полезны! ), поэтому компания Microsoft предложила такой вариант WSH. Возможности WSH-скриптов уже гораздо больше, ведь данные скрипты уже создаются на полноценных языках, таких как VBScript и JScript.

    Именно о JScript мы сегодня и поговорим.

    Но о VBScript мы тоже скажем пару слов.

    VBScript – это скриптовой язык программирования, созданный компанией Microsoft для разработки скриптов в операционной системе Windows. Другими словами, это один из языков, которые может интерпретировать Windows Script Host. И из названия ясно, что VBScript основан на языке Visual Basic, поэтому тем, кто знаком с Visual Basic будет просто писать WSH-скрипты на этом языке программирования.

    JScript – скриптовой язык программирования, с помощью которого можно создавать (писать ) скрипты, которые будут интерпретироваться компонентом Windows Script Host.

    С первого взгляда JScript во многом похож на JavaScript (ECMAScript ), это и естественно, так как синтаксис, некоторый объекты, методы, свойства аналогичны JavaScript. Но это все же не JavaScript, а именно JScript. JavaScript (ECMAScript ) ориентирован на объекты браузера, а JScript уже на компоненты операционной системы Windows. Но как мы сказали, они похожи, поэтому те, кто владеют языком программирования JavaScript с легкостью перейдут на JScript.

    Возможности Windows Script Host

    А теперь давайте поговорим о том, зачем нам нужно писать эти самые WSH-скрипты, т.е. об их возможностях и преимуществах:

    • Возможность взаимодействия с файловой системой (файлы, каталоги ), системным реестром, ресурсами локальной сети;
    • Взаимодействие с такими продуктами как Microsoft Word, Excel и другими программами. Т.е. например, мы можем создавать excel файлы или конвертировать другие форматы в excel файлы;
    • Взаимодействие с ActiveX-технологиями, например: ActiveX Data Object (ADO) - доступ к базам данных разных форматов, Active Directory Service Interface (ADSI) - работа со службами каталогов Active Directory;
    • Наличие полноценного языка программирования, с помощью которого можно реализовывать сложные алгоритмы, которые например нельзя реализовать с помощью bat файлов.

    Скрипты на JScript имеют расширение.js такое же, как и на JavaScript за исключением того, что эти скрипты обрабатывает не браузер, а Windows Script Host.

    На JScript возможно даже реализация графического интерфейса через объект браузера (internet explorer ), согласитесь это уже полноценная программа.

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

    Перейдем к практике, так как у нас сегодня статья по основам, мы рассмотрим простые примеры написание скриптов на JScript.

    Примечание! Для того чтобы попробовать примеры ниже скопируйте код любого примера в текстовый файл и сохраните с расширением.js, например, test.js.

    Выводим сообщение на JScript

    В WSH имеется специальный объект, на основе которого мы уже можем в дальнейшем создавать другие объекты, настраивать взаимодействие с программами, файлами и другими компонентами операционной системы.

    Этим объектом является WScript . Пример его использования на Jscript:

    Var WshShell = WScript.CreateObject("WScript.Shell");

    Тем самым мы создали объект, с помощью которого мы можем получить доступ к компонентам Windows.

    Например, вывести сообщение:

    //Выводим сообщение WshShell.Popup("Моя первая программа на JScript"); //Завершаем работу с объектом WScript.Quit();

    Работа с Excel на JScript

    Теперь давайте создадим другой объект, например, Excel файл:

    // создаем объект для работы с Excel var Excel = WScript.CreateObject("Excel.Application"); // добавляем книгу в Excel Excel.WorkBooks.Add; //добавляем в первую ячейку нужный текст Excel.Cells(1,1).Value ="Мой текст для вставки в Excel"; // делаем активным наш Excel документ Excel.Visible = true;

    Как Вы понимаете, мы имеем доступ ко всем свойствам в Excel, другими словами, мы можем изменить внешний вид, задать формат ячеек и многое другое. Для примера давайте поэкспериментируем с некоторыми свойствами:

    //создаем объект для работы с Excel var Excel = WScript.CreateObject("Excel.Application"); //добавляем книгу в Excel Excel.WorkBooks.Add; //выделяем нужный нам диапазон Excel.Range("A1:C1").Select; //объединяем ячейки в нашем диапазоне Excel.Selection.MergeCells = true; //добавляем нужный текст Excel.Selection.Value ="Мой текст для вставки в Excel"; //делаем наш текст жирным Excel.Selection.Font.Bold = true; //изменяем в 4 ячейке формат данных на числовой с двумя знаками после запятой Excel.Cells(1, 4).NumberFormat = "00.00" //вставляем в 4 ячейку нашу цифру Excel.Cells(1, 4).Value = 1234; //выровняем по центру наше значение Excel.Cells(1, 4).HorizontalAlignment = 3; //делаем активным наш Excel документ Excel.Visible = true;

    Работа с текстовым файлом и Excel на JScript

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

    Для того чтобы настроить взаимодействие с файловой системой, необходимо создать объект FileSystemObject , который работает с файлами и каталогами. Вот пример небольшого скрипта, который считывает данные из текстового файла построчно и записывает их в Excel документ, причем мы все строки пронумеруем и зададим ширину столба для данных в Excel:

    Пример текстового файла:

    Первая строка Вторая строка Третья строка

    Пример скрипта:

    //создаем объект FileSystemObject var FileSysObj = WScript.CreateObject("Scripting.FileSystemObject"); //объявляем нужные нам переменные var nRow = 1, num=1; var txt = ""; //открываем файл my.txt в той же папке, параметр 1 для чтения файла var myText = FileSysObj.OpenTextFile("my.txt", 1); //как и раньше создаем объект для работы с Excel var Excel = WScript.CreateObject("Excel.Application"); //добавляем книгу в Excel Excel.WorkBooks.Add; //циклом считываем строки из файла, пока они не закончатся // и записываем их в наш Excel документ while (!myText.AtEndOfStream) { //считываем строку txt = myText.ReadLine(); //нумеруем наши строки в Excel Excel.Cells(nRow, 1).Value = num; //выставляем ширину вторго столбца Excel.Columns(2).ColumnWidth = 15; //записываем данные в ячейку Excel.Cells(nRow, 2).Value = txt; //увеличиваем переменные на 1 nRow++; num++; } //закрываем файл myText.Close(); //делаем активным наш Excel документ Excel.Visible = true; //выходим из скрипта WScript.Quit();

    Как всегда весь код я прокомментировал, поэтому неясностей возникнуть не должно.

    Я думаю для начала этого вполне достаточно, в дальнейшем мы будем разбирать задачи посложней, ведь при помощи Jscript в WSH можно очень много чего сделать, гораздо больше, чем с помощью простых bat файлов. До встречи!



    Статьи по теме