Новые книги

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

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

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

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

Синтаксис языка shell

2. Синтаксис языка shell

2.1. Комментарии

Строки, начинающиеся с #, трактуются как комментарии.

2.2. Подстановка результатов выполнения команд

Выражения можно заключать в обратные кавычки (`). Такие выражения вычисляются в месте использования. Они могут быть, например, частью строк. Пример. Пусть параметром макрокоманды является имя файла с расширением .for. Требуется удалить одноименный файл с расширением .err.

        name=`ena -n $1`
        rm -f ${name}.err
Значение, полученное в результате выполнения команды
ena -n $1
присваивается переменной name. Фигурные скобки использованы для выделения аргумента операции перехода от имени к значению. Без них .err приклеилась бы к имени.

2.3. Переменные и подстановка их значений

Все переменные в языке shell - текстовые. Их имена должны начинаться с буквы и состоять из латинских букв, цифр и знака подчеркивания (_). Чтобы воспользоваться значением переменной, надо перед ней поставить символ $. Использование значения переменной называется подстановкой.

Различается два класса переменных: позиционные и с именем. Позиционные переменные - это аргументы командных файлов, их именами служат цифры: $0 - имя команды, $1 - первый аргумент и т.д. Значения позиционным переменным могут быть присвоены и командой set (см. Специальные команды). Пример. После вызова программы на shellе, хранящейся в файле ficofl:

        ficofl -d / \*.for
значением $0 будет ficofl, $1 - -d, $2 - /, $3 - *.for, значения остальных позиционных переменных будут пустыми строками. Заметим, что если бы символ * при вызове ficofl не был экранирован, в качестве аргументов передались бы имена всех фортранных файлов текущей директории.

Еще две переменные хранят командную строку за исключением имени команды: $@ эквивалентно $1 $2 ..., а $* - "$1 $2 ...". Начальные значения переменным с именем могут быть установлены следующим образом:

        <имя>=<значение> [ <имя>=<значение> ] ...

Не может быть одновременно функции (см. Управляющие конструкции) и переменной с одинаковыми именами. Для подстановки значений переменных возможны также следующие конструкции:

        ${<переменная>}

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

        ${<переменная>:-<слово>}

если <переменная> определена и не является пустой строкой, то подставляется ее значение; иначе подставляется <слово>.

        ${<переменная>:=<слово>}

если <переменная> не определена или является пустой строкой, ей присваивается значение <слово>; после этого подставляется ее значение.

        ${<переменная>:?<слово>}

если <переменная> определена и не является пустой строкой, то подставляется ее значение; иначе на стандартный вывод выводится <слово> и выполнение shellа завершается. Если <слово> опущено, то выдается сообщение "parameter null or not set".

        ${<переменная>:+<слово>}

если <переменная> определена и не является пустой строкой, то подставляется <слово>; иначе подставляется пустая строка.

Пример: если переменная d не определена или является пустой строкой, то выполняется команда pwd

        echo ${d:-`pwd`}
Следующие переменные автоматически устанавливаются shell'ом:

# количество позиционных параметров (десятичное)
- флаги, указанные при запуске shellа или командой set
? десятичное значение, возвращенное предыдущей синхронно выполненной командой
$ номер текущего процесса
! номер последнего асинхронного процесса
@ эквивалентно $1 $2 $3 ...
* эквивалентно "$1 $2 $3 ..."

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

        echo $$

2.4. Специальные переменные

Shell'ом используются следующие специальные переменные:

HOME директория, в которую пользователь попадает при входе в систему или при выполнении команды cd без аргументов
PATH список полных имен каталогов, в которых ищется файл при указании его неполного имени.
PS1 основная строка приглашения (по умолчанию $)
PS2 дополнительная строка приглашения (по умолчанию >); в интерактивном режиме перед вводом команды shell'ом выводится основная строка приглашения.
Если нажата клавиша new_line, но для завершения команды требуется дальнейший ввод, то выводится дополнительная строка приглашения
IFS последовательность символов, являющихся разделителями в командной строке (по умолчанию это <пробел>, <табуляция> и <возврат_каретки>)

Назад | Содержание | Вперед