XAUTHORITY=/home/bozo/.Xauthority
Если команда set используется с ключом "--", после которого следует переменная, то значение переменной переносится в позиционные параметры (аргументы). Если имя переменной отсутствует, то эта команда приводит к сбросу позиционных параметров.
Пример 11-14. Изменение значений позиционных параметров (аргументов)
variable="one two three four five"
# Значения позиционных параметров берутся из "$variable".
shift; shift # сдвиг двух первых параметров.
echo "первый параметр = $first_param" # one
echo "второй параметр = $second_param" # two
echo "остальные параметры = $remaining_params" # three four five
echo "первый параметр = $first_param" # one
echo "второй параметр = $second_param" # two
# ======================================================
# Позиционные параметры сбрасываются, если не задано имя переменной.
echo "первый параметр = $first_param" # (пустое значение)
echo "второй параметр = $second_param" # (пустое значение)
См. так же Пример 10-2 и Пример 12-40.
Команда unset удаляет переменную, фактически -- устанавливает ее значение в null. Обратите внимание: эта команда не может сбрасывать позиционные параметры (аргументы).
Пример 11-15. "Сброс" переменной
# unset.sh: Сброс переменной.
variable=hello # Инициализация.
echo "variable = $variable"
# Тот же эффект дает variable=
echo "(unset) variable = $variable" # $variable = null.
Команда export экспортирует переменную, делая ее доступной дочерним процессам. К сожалению, невозможно экспортировать переменную родительскому процессу. В качестве примера использования команды export можно привести сценарии инициализации системы, вызываемые в процессе загрузки, которые инициализируют и экспортируют переменные окружения, делая их доступными для пользовательских процессов.
Пример 11-16. Передача переменных во вложенный сценарий awk, с помощью export
# Еще одна версия сценария "column totaler" (col-totaler.sh)
# который суммирует заданную колонку (чисел) в заданном файле.
# Здесь используются переменные окружения, которые передаются сценарию 'awk'.
if [ $# -ne "$ARGS" ] # Проверка количества входных аргументов.
echo "Порядок использования: `basename $0` filename column-number"
#===== До этой строки идентично первоначальному варианту сценария =====#
# Экспорт номера столбца.
# ------------------------------------------------
awk '{ total += $ENVIRON["column_number"]