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


Программирование на языке сценариев командной оболочки - стр. 26


/p>

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

bash$ eval "`seq 10000 | sed -e 's/.*/export var&=ZZZZZZZZZZZZZZ/'`"

bash$ du

bash: /usr/bin/du: Argument list too long

(Спасибо S. C. за вышеприведенный пример и пояснения.)

Если сценарий изменяет переменные окружения, то они должны "экспортироваться", т.е передаваться окружению, локальному по отношению к сценарию. Эта функция возложена на команду export.

Сценарий может экспортировать

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

экспортировать переменные "на верх" командной оболочке. Дочерний процесс не может экспортировать переменные родительскому процессу.

---

позиционные параметры

аргументы, передаваемые скрипту из командной строки -- $0, $1, $2, $3..., где $0 -- это название файла сценария, $1 -- это первый аргумент, $2 -- второй, $3 -- третий и так далее. [13] Аргументы, следующие за $9, должны заключаться в фигурные скобки, например: ${10}, ${11}, ${12}.

Специальные переменные $* и $@ содержат все позиционные параметры (аргументы командной строки).

Пример 4-5. Позиционные параметры

#!/bin/bash

# Команда вызова сценария должна содержать по меньшей мере 10 параметров, например # ./scriptname 1 2 3 4 5 6 7 8 9 10 MINPARAMS=10

echo

echo "Имя файла сценария: \"$0\"." # Для текущего каталога добавит ./ echo "Имя файла сценария: \"`basename $0`\"." # Добавит путь к имени файла (см. 'basename')

echo

if [ -n "$1" ] # Проверяемая переменная заключена в кавычки. then echo "Параметр #1: $1" # необходимы кавычки для экранирования символа # fi

if [ -n "$2" ] then echo "Параметр #2: $2" fi




- Начало -  - Назад -  - Вперед -