Читаем Искусство программирования на языке сценариев командной оболочки полностью

# к последовательному порту. Вернуть их в первоначальное состояние.

rm /var/lock/LCK..ttyS3 # Удалить lock-файл последовательного порта.

exit 0

<p><strong>Пример 11-11. Шифрование по алгоритму "rot13"</strong></p>

#!/bin/bash

# Реализация алгоритма шифрования "rot13" с помощью 'eval'.

# Сравните со сценарием "rot13.sh".

setvar_rot_13() # Криптование по алгоритму "rot13"

{

local varname=$1 varvalue=$2

eval $varname='$(echo "$varvalue" | tr a-z n-za-m)'

}

setvar_rot_13 var "foobar" # Пропустить слово "foobar" через rot13.

echo $var # sbbone

echo $var | tr a-z n-za-m # foobar

# Расшифровывание.

# Пример предоставил Stephane Chazelas.

exit 0

Rory Winston представил следующий пример, как образец практического использования команды eval.

<p><strong>Пример 11-12. Замена имени переменной на ее значение, в исходном тексте программы на языке Perl, с помощью eval</strong></p>

В программе "test.pl", на языке Perl:

...

my $WEBROOT = ;

...

Эта попытка подстановки значения переменной вместо ее имени:

$export WEBROOT_PATH=/usr/local/webroot

$sed 's//$WEBROOT_PATH/' < test.pl > out

даст такой результат:

my $WEBROOT = $WEBROOT_PATH;

Тем не менее:

$export WEBROOT_PATH=/usr/local/webroot

$eval sed 's//$WEBROOT_PATH/' < test.pl > out

# ====

Этот вариант дал желаемый результат -- имя переменной, в тексте программы,

благополучно было заменено на ее значение:

my $WEBROOT = /usr/local/webroot

Команда eval может быть небезопасна. Если существует приемлемая альтернатива, то желательно воздерживаться от использования eval. Так, eval $COMMANDS исполняет код, который записан в переменную COMMANDS, которая, в свою очередь, может содержать весьма неприятные сюрпризы, например rm -rf *. Использование команды eval, для исполнения кода неизвестного происхождения, крайне опасно.

set

Команда set изменяет значения внутренних переменных сценария. Она может использоваться для переключения опций (ключей, флагов), определяющих поведение скрипта. Еще одно применение -- сброс/установка позиционных параметров (аргументов), значения которых будут восприняты как результат работы команды (set `command`).

<p><strong>Пример 11-13. Установка значений аргументов с помощью команды set</strong></p>

#!/bin/bash

# script "set-test"

# Вызовите сценарий с тремя аргументами командной строки,

# например: "./set-test one two three".

echo

echo "Аргументы перед вызовом set \`uname -a\` :"

echo "Аргумент #1 = $1"

echo "Аргумент #2 = $2"

echo "Аргумент #3 = $3"

set `uname -a` # Изменение аргументов

# значения которых берутся из результата работы `uname -a`

echo $_

echo "Аргументы после вызова set \`uname -a\` :"

# $1, $2, $3 и т.д. будут переустановлены в соответствии с выводом

#+ команды `uname -a`

echo "Поле #1 'uname -a' = $1"

echo "Поле #2 'uname -a' = $2"

echo "Поле #3 'uname -a' = $3"

echo ---

echo $_ # ---

echo

exit 0

Вызов set без параметров просто выводит список инициализированных переменных окружения.

bash$ set

AUTHORCOPY=/home/bozo/posts

BASH=/bin/bash

BASH_VERSION=$'2.05.8(1)-release'

...

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных