→ Как писать скрипты для Windows? Как пишутся скрипты на PHP Скрипт чтобы все

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

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

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

Разработка скрипта продаж — занятие не простое. В статье «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 техники для скрипта продаж с…

Любой начинающий системный администратор 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 за ее замечания и советы.

Я лично занимаюсь шлифовкой всех скриптов продаж перед финальной сдачей их заказчику. Но перед тем как попасть на такое “тёпленькое” место, я написал более 100 штук.

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

Поэтому поговорим сегодня о данных этапах и разберёмся как написать эффективный скрипт продаж в 10 шагов.

Надо или нет?

Так как вы оказались на этой странице, значит вы искали подобный материал. И должны понимать о чём идёт речь.

Но как показывает практика, каждый воспринимает мир через свою призму и даже обычно “яблоко” все воспринимают по-разному (красное маленькое, ярко зелёное и глянцевое, матовое зелёное с точками и т.д.).

Поэтому обсудим несколько вводных тем про , на встрече или . И начнём с определения.

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

Это если умно. Если просто, то будет звучать так:

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

И для меня, как для разработчика скриптов продаж, нет такого вопроса “Нужен ли он мне?”. И всё же я обозначу те случаи, когда вам критически важно написать алгоритм общения для своей компании:

  1. Низкие продажи и плохой сервис;
  2. У всех продавцов разные результаты;
  3. Нет общего регламента работы;
  4. Новичок долго вникает в процесс;
  5. Уходит много времени на обучение сотрудников;
  6. Планируется продажа франшизы.

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

А именно для обозначения последовательности действий (1 страница) и такой скрипт лучше написать самостоятельно, чем обращаться к кому-нибудь. Так, хватит, давайте передохнем, сейчас я предлагаю Вам сделать небольшую видеопаузу 🙂

Я или Вы будете мучиться

Написание сценария разговора это не самое увлекательное действие, хоть я и люблю свою работу.

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

И в этот момент мозг работает куда активнее, чем при обычном разговоре по телефону или на встрече.

Да сколько можно думать..

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

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

Поэтому скажите вы себе: “Я сам буду мучаться” или скажите другим: “Вы будете мучаться” - решать вам. Есть во всём свои плюсы и минусы. И я хочу о них рассказать, ввести вас в курс дела.

Самостоятельно

Не самый плохой вариант, сразу скажу. И раз вы читаете этот материал, возможно вы планируете это и сделать.

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

Потому что всё, что будет у вас в голове, будет строиться на сухой теории. А в этом непростом деле нужна именно практика.

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

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

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

Фрилансер

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

Можно найти предложения от 2 до 5 тысяч рублей. Но, как всегда, есть много НО. Начнём с банального, вне зависимости от сферы работы часто фрилансеры берут деньги и теряются. Продолжать эту мысль смысл не вижу.

Фрилансер хорошо знает актуальные техники продаж, но сам при этом практически не продаёт, так как не надо, нет такого потока входящих клиентов.

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

Компания

Компании такого формата как мы. Таких, к слову, на рынке не так уж много, если выделять тех, кто “на слуху”, то получим список из не более, чем 5 позиций.

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

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

Опыт был во многих сферах, но в каждой компании помимо специфики сферы, есть специфика компании.

Поэтому идеальным сочетанием будет 10% вашего времени для помощи в понимании специфики и 90% наших усилий для написания скрипта продаж.

Сколько стоит?

Последний вводный блок перед тем, как мы перейдём к рассмотрению процесса из 10 шагов.

И разговор пойдёт о стоимости за всё это чудо, которое, по словам некоторых, “написать можно за пару часов в спокойном режиме”. Так ли это?

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

И мы со 100% гарантией можем сказать, что если скрипт написан в 2-3 раза быстрее, то это: либо готовые шаблоны, адаптированные под вас, а не написаны с нуля.

Или это крайне не квалифицированная работа, потому что к скрипту нужно вернуться, чтобы посмотреть на него со свежей головой.

Вот они, халтурщики во всей красе

В вип-пакете мы ещё и тестируем сценарий за клиента на реальных звонках, то есть проверяем его на деле, корректируем.

А звонки с учётом перезвона растягиваются минимум на 2-3 дня. К слову, за время тестирования иногда происходит продажа и скрипт окупается с лихвой.

Что касается стоимости. На рынке вы можете найти предложения от 2 тысяч до 90 тысяч рублей.

Можно долго спорить, завышена цена на эту услугу или нет, но точно можно сказать, что нормальный скриптолог, который знаете себе цену, не будет брать меньше 10 тысяч рублей за написание скрипта без учёта дополнительных действий.

Решать только вам кого выбрать и сколько заплатить. Я лишь хочу, чтобы вы понимали, что если у вас есть человек/компания, которые смогут написать скрипт даже на 1% лучше и стоить это будет в несколько раз дороже, то соглашайтесь.

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

НАС УЖЕ БОЛЕЕ 29 000 чел.
ВКЛЮЧАЙТЕСЬ

Как написать скрипт продаж

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

Далее я вам расскажу по каким шагам строится создание идеального текстового продавца в ворде или в специальной программе .

Шаг 1 - Кто он?

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

Шаг 3 - Определение ступеней и целей

Каждый скрипт пишется под определённую задачу и не нужно в один голос кричать, что основная задача - “продажи!”.

Это и так понятно по умолчанию. На этом шаге ваша основная задача - понять этапы и какие цели должен достигнуть каждый мини-скрипт на своём участке.

Для примера рассмотрите ступени и цели, которые мы прописывали при недавнем создании скрипта исходящего холодного звонка:

  1. Верификация ЛПРа (ЛДПРа);
  2. Проход блокера;
  3. Разговор с ЛПР и отправка маркетинг-кита;
  4. Первый перезвон ЛПРу и предложение на встречу/ выявление потребности для расчёта сметы.
  5. Второй перезвон ЛПРу и закрытие на пробную партию.

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

Шаг 4 - Установка блоков и техник продаж

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

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


Пример составление блоков

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

А всё потому, что у нас в компании есть стандартные техники, которые мы называем своим “птичьим языком” для более быстрого понимания друг друга и клиент их при получение своей версии не видит.

Шаг 5 - Написание речевых фраз и оформление

Вот оно, самое интересное! А то всё готовились и готовились. Наконец-то пишем тексты, основываясь на предыдущих шагах и знаниях о продажах.

И знаете что самое проблемное? То, что не существует для всех компаний универсальных фраз.

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


Пример написания речевых фраз

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

Представьте себе переменные, как хранилища данных. Чтобы обрабатывать информацию, будь то числа или имена, вам необходимо создать своеобразный контейнер для хранения информации. Данный процесс называется объявлением переменной. В PHP синтаксис объявления переменной выглядит так: “$myVariable = “Hello World!”;”

  • Знак доллара ($) в самом начале сообщает движку PHP, что далее идет переменная $myVariable. Все переменные обязательно должны начинаться со знака доллара, но название самой переменной может быть любым.
  • В примере выше строка "Hello World!" - это значение, а переменной является $myVariable. Вы сообщили PHP, что нужно сохранить значение справа от знака равенства (=) в переменной, расположенной слева от знака равенства.
  • Переменная, содержащая текстовое значение, называется строкой.


  • $myVariable = “Hello World!”;
    echo $myVariable;
    ?>
  • Сохраните и откройте файл в браузере. Воспользуйтесь меню «Файл» > «Сохранить как…» и сохраните файл с именем “myfirstvariable.php”. Откройте браузер, и введите в него адрес: http://localhost/myfirstvariable.php; выполненный скрипт выведет значение переменной. Результат окажется тем же, что и при выводе обычного текста, но способ его получения будет отличаться.

    • Убедитесь в том, что вы сохранили файл в корневой директории документов сервера. Обычно внутри папки сервера Apache на Windows этот каталог называется “htdocs”, для OSX каталог по умолчанию расположен в /Library/Webserver/Documents, однако этот путь может быть скорректирован при настройке сервера.
  • Используйте переменные с числами. Переменные также могут хранить в себе числовые значения (например, целые числа), с которыми можно выполнять простые математические действия. Для примера объявите в скрипте три переменные:“$mySmallNumber”, “$myLargeNumber”, и “$myTotal”.

    • Ваш код должен выглядеть примерно так:
      $mySmallNumber;
      $myLargeNumber;
      $myTotal;
      ?>
  • Присвойте целые численные значения первым двум переменным. Присвойте целые значения для “$mySmallNumber” и “myLargeNumber”.

    • Обратите внимание, что целые числа не нужно заключать в кавычки. В противном случае числа будут считаться строковыми значениями, как будто бы они являются текстом наподобие “Hello World!”.
    • Ваш код должен выглядеть примерно так:
      $mySmallNumber = 12;
      $myLargeNumber = 356;
      $myTotal;
      ?>
  • Используйте третью переменную для суммирования и вывода результата. Чтобы не выполнять расчеты самостоятельно, можно просуммировать две переменные в “$myTotal”. Просто укажите соответствующую математическую функцию, и компьютер выполнит расчет за вас. Чтобы вывести результат на экран, нужно всего лишь вызвать команду echo с переменной в качестве параметра. Вызов команды echo должен располагаться после объявления переменной.

    • Любое изменение значений объявленных ранее переменных будет отражаться на результате вывода значения переменной “$myTotal”, выводимой с помощью команды echo.
    • Теперь ваш код должен выглядеть примерно так:
      $mySmallNumber = 12;
      $myLargeNumber = 356;
      $myTotal = $mySmall Number + $myLargeNumber;
      echo $myTotal;
      ?>
  • Сохраните файл и откройте скрипт в браузере. Ваш браузер должен вывести на экран одно число. Это число будет являться суммой двух значений, определенной расчетом переменной “$myTotal”.

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

    • Первая переменная с именем $myVariable содержит строку "Hello World!". Пока вы сами не измените значение этой переменной, $myVariable будет содержать данную строку текста без изменений.
    • Команда echo будет выводить на экран заданное вами значение переменной $myVariable.
  • Если требуется, изменяйте значения целочисленных переменных. Вы уже ознакомились с базовыми основами операций с целыми числами с использованием математических функций. Итоговые результаты таких расчетов могут сохраняться в отдельной переменной. При этом были рассмотрены простейшие шаги, демонстрирующие возможности работы с переменными.

    • Каждой из двух переменных $mySmallNumber и $myLargeNumber было присвоено целое число.
    • Третья переменная $myTotal сохраняла в себе сумму значений двух вышеуказанных переменных $mySmallNumber и $myLargeNumber. Пока $mySmallNumber хранит одно числовое значение, а $myLargeNumber хранит другое число, $myTotal в результате вычисления становится равным сумме двух этих чисел. Результат вычисления может измениться с изменением значения любой из исходных переменных.
  • Пишем скрипты в Linux (обучение на примерах)

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

    1. Введение

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

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

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

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

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

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

      устанавливающий правила файервола при загрузке системы.
      выполняющий backup настроек и данных.
      добавляющий почтовые ящики в почтовый сервер (точнее в базу mysql)
      запускающий в определенное время (лучше каждую ночь) программу, которая сканирует логи прокси-сервера и выдает удобный 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<$ELEMENTS;i++)); do
    echo ${ARRAY[${i}]}
    done

    Код: Выделить всё $./arrays.sh
    Debian Linux
    Redhat Linux
    Ubuntu
    Linux

    8.2 Заполняем массив значениями из файла

    #!/bin/bash
    # Объявляем массив
    declare -a ARRAY
    # Команда exec # stdin (обычно это клавиатура), будет производиться из этого файла. Это дает возможность читать
    # содержимое файла, строку за строкой, и анализировать каждую введенную строку с помощью sed и/или awk.
    exec 10 let count=0

    while read LINE <&10; do

    ARRAY[$count]=$LINE
    ((count++))
    done

    echo Number of elements: ${#ARRAY[@]}
    # Вывод значений массива
    echo ${ARRAY[@]}
    # закрываем файл
    exec 10>&-

    Код: Выделить всё $ cat bash.txt
    Debian Linux
    Redhat Linux
    Ubuntu
    Linux
    $ ./arrays.sh
    Number of elements: 4
    Debian Linux Redhat Linux Ubuntu Linux

    9. Условия «если-то-иначе»
    9.1. Простое использование «если-иначе» условий
    Обратите внимание на пробелы в квадратных скобках, без которых условие работать не будет.

    #!/bin/bash
    directory=»./BashScripting»

    # проверяем наличие директории
    if [ -d $directory ]; then
    echo «Directory exists»
    else
    echo «Directory does not exists»
    fi

    Код: Выделить всё $ ./if_else.sh
    Directory does not exists
    $ mkdir BashScripting
    $ ./if_else.sh
    Directory exists

    9.2 Вложенные «если-иначе» условия

    #!/bin/bash
    # Объявляем переменную со значением 4
    choice=4
    # Выводим на экран
    echo «1. Bash»
    echo «2. Scripting»
    echo «3. Tutorial»

    # Выполняем, пока переменная равна четырем
    # Зацикливание
    while [ $choice -eq 4 ]; do

    # читаем пользовательский ввод
    read choice
    # вложенное «если-иначе» условие
    if [ $choice -eq 1 ] ; then

    echo «You have chosen word: Bash»

    if [ $choice -eq 2 ] ; then
    echo «You have chosen word: Scripting»
    else

    if [ $choice -eq 3 ] ; then
    echo «You have chosen word: Tutorial»
    else
    echo «Please make a choice between 1-3 !»
    echo «1. Bash»
    echo «2. Scripting»
    echo «3. Tutorial»
    echo -n «Please choose a word ? »
    choice=4
    fi
    fi
    fi
    done

    Код: Выделить всё $ ./nested.sh
    1. Bash
    2. Scripting
    3. Tutorial

    5

    1. Bash
    2. Scripting
    3. Tutorial
    Please choose a word ?
    4
    Please make a choice between 1-3 !
    1. Bash
    2. Scripting
    3. Tutorial
    Please choose a word ?
    3
    You have chosen word: Tutorial

    Таким образом сначала тело цикла «while» выполняется, т.к. переменная choice изначально равна четырем. Потом читаем в неё пользовательский ввод, и если ввод не равен 1,2 или 3 то делаем нашу переменную снова равную 4, в связи с чем тело цикла повторяется (снова необходимо вводить 1,2 или 3).

    10. Сравнения
    10.1 Арифметические сравнения

    Lt <
    -gt >
    -le <=
    -ge >=
    -eq ==
    -ne !=

    #!/bin/bash

    NUM1=2
    NUM2=2
    if [ $NUM1 -eq $NUM2 ]; then
    echo «Both Values are equal»
    else
    echo «Values are NOT equal»
    fi

    Код: Выделить всё $ ./equals.sh
    Both Values are equal

    #!/bin/bash
    # Объявляем переменные с целочисленными значениями
    NUM1=2
    NUM2=3
    if [ $NUM1 -eq $NUM2 ]; then
    echo «Both Values are equal»
    else
    echo «Values are NOT equal»
    fi

    Код: Выделить всё $ ./equals.sh
    Values are NOT equal

    #!/bin/bash
    # Объявляем переменные с целочисленными значениями
    NUM1=2
    NUM2=1
    if [ $NUM1 -eq $NUM2 ]; then
    echo «Both Values are equal»
    elif [ $NUM1 -gt $NUM2 ]; then
    echo «$NUM1 is greater then $NUM2»
    else
    echo «$NUM2 is greater then $NUM1»
    fi

    Код: Выделить всё $ ./equals.sh
    2 is greater then 1

    10.2 Символьно-текстовые сравнения

    Одинаковые
    != не одинаковые
    < меньще чем
    > больше чем
    -n s1 переменная s1 не пустая
    -z s1 переменная s1 пустая

    #!/bin/bash

    S1=»Bash»

    S2=»Scripting»
    if [ $S1 = $S2 ]; then

    else
    echo «Strings are NOT equal»
    fi

    Код: Выделить всё $ ./statement.sh
    Strings are NOT equal

    #!/bin/bash
    # Объявляем символьную переменную S1
    S1=»Bash»
    # Объявляем символьную переменную S2
    S2=»Bash»
    if [ $S1 = $S2 ]; then
    echo «Both Strings are equal»
    else
    echo «Strings are NOT equal»
    fi

    Код: Выделить всё $ ./statement.sh
    Both Strings are equal

    11. Проверка файлов

    B filename Block special file
    -c filename Special character file
    -d directoryname Check for directory existence
    -e filename Check for file existence
    -f filename Check for regular file existence not a directory
    -G filename Check if file exists and is owned by effective group ID.
    -g filename true if file exists and is set-group-id.
    -k filename Sticky bit
    -L filename Symbolic link
    -O filename True if file exists and is owned by the effective user id.
    -r filename Check if file is a readable
    -S filename Check if file is socket
    -s filename Check if file is nonzero size
    -u filename Check if file set-ser-id bit is set
    -w filename Check if file is writable
    -x filename Check if file is executable

    #!/bin/bash
    file=»./file»
    if [ -e $file ]; then
    echo «File exists»
    else
    echo «File does not exists»
    fi

    Код: Выделить всё $ ls
    file.sh
    $ ./file.sh
    File does not exists
    $ touch file
    $ ls
    file file.sh
    $ ./file.sh
    File exists

    Аналогично для примера мы можем использовать «в то время как» петли, чтобы проверить, если файл не существует. Этот сценарий будет спать, пока файл не существует. Обратите внимание на Bash отрицатель «!» что сводит на нет (инвертирует) -e опцию.

    12. Циклы
    12.1. Цикл For

    #!/bin/bash
    # for цикл
    for f in $(ls /var/); do
    echo $f
    done

    Запуск for-цикла из командной строки bash:

    Код: Выделить всё $ for f in $(ls /var/); do echo $f; done Код: Выделить всё $ for f in $(ls /var/); do echo $f; done
    backups
    cache
    crash
    games
    lib
    local
    lock
    log
    mail
    opt
    run
    spool
    tmp
    www

    12.2. While цикл

    #!/bin/bash
    COUNT=6
    # while цикл
    while [ $COUNT -gt 0 ]; do

    let COUNT=COUNT-1
    done

    Код: Выделить всё $ ./while_loop.sh
    Value of count is: 6
    Value of count is: 5
    Value of count is: 4
    Value of count is: 3
    Value of count is: 2
    Value of count is: 1

    12.3. Until цикл

    #!/bin/bash
    COUNT=0
    # until цикл
    until [ $COUNT -gt 5 ]; do
    echo Value of count is: $COUNT
    let COUNT=COUNT+1
    done

    Код: Выделить всё $ ./until_loop.sh
    Value of count is: 0
    Value of count is: 1
    Value of count is: 2
    Value of count is: 3
    Value of count is: 4
    Value of count is: 5

    12.4. Циклы с неявными условиями
    В следующем примере условием while-цикла является наличие стандартного ввода.
    Тело цикла будет выполняться пока есть чему перенаправляться из стандартного вывода в команду read.

    #!/bin/bash
    # Данный скрипт будет искать и удалять пробелы
    # в файлах, заменяя их на подчеркивания
    DIR=».»
    Управление циклом с командой read путем перенаправления вывода в цикле.
    find $DIR -type f | while read file; do
    # используем POSIX-класс [:space:] чтобы найти пробелы в именах файлов
    if [[ «$file» = *[[:space:]]* ]]; then
    # замена пробелов подчеркиваниями
    mv «$file» `echo $file | tr ‘ ‘ ‘_’`
    fi;
    done

    Код: Выделить всё $ ls -1
    script.sh
    $ touch "file with spaces"
    $ ls -1
    file with spaces
    script.sh
    $ ./script.sh
    $ ls -1
    file_with_spaces
    script.sh

    13. Функции

    #!/bin/bash
    # Функции могут быть объявлены в любом порядке
    function function_B {
    echo Function B.
    }
    function function_A {
    echo $1
    }
    function function_D {
    echo Function D.
    }
    function function_C {
    echo $1
    }
    # Вызываем функции
    # передаем параметр в функцию function A
    function_A «Function A.»
    function_B
    # передаем параметр в функцию function C
    function_C «Function C.»
    function_D

    Код: Выделить всё $ ./functions.sh
    Function A.
    Function B.
    Function C.
    Function D.

    14. Оператор выбора — Select

    #!/bin/bash
    PS3=’Choose one word: ‘
    # select
    select word in «linux» «bash» «scripting» «tutorial»
    do
    echo «The word you have selected is: $word»
    # Прерываем, в противном случае цикл будет бесконечный.
    break
    done
    exit 0

    Код: Выделить всё $ ./select.sh
    1) linux
    2) bash
    3) scripting
    4) tutorial
    Choose one word: 4
    The word you have selected is: tutorial

    15. Оператор выбора — Case

    #!/bin/bash
    echo «What is your preferred programming / scripting language»
    echo «1) bash»
    echo «2) perl»
    echo «3) phyton»
    echo «4) c++»
    echo «5) I do not know !»
    read case;
    # простая структура case-выбора
    # обратите внимание, что в данном примере $case — всего лишь переменная
    # и не обязана так называться. Это лишь пример
    case $case in
    1) echo «You selected bash»;;
    2) echo «You selected perl»;;
    3) echo «You selected phyton»;;
    4) echo «You selected c++»;;
    5) exit
    esac

    Код: Выделить всё $ ./case.sh
    What is your preferred programming / scripting language
    1) bash
    2) perl
    3) phyton
    4) c++
    5) I do not know !
    4
    You selected c++

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

    Более подробную информацию можно получить из различных источников, например отсюда
    оригинал: https://www.linuxconfig.org/Bash_scripting_Tutorial
    https://ruslandh.narod.ru/howto_ru/Bash-Prog-Intro/
    https://bug.cf1.ru/2005-03-17/programmin … -book.html

    https://ubuntologia.ru/forum/viewtopic.php?f=109&t=2296

     

     

    Это интересно: