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

Позиционные параметры (аргументы)

$0, $1, $2 и т.д.

аргументы передаются... из командной строки в сценарий, функциям или команде set (см. Пример 4-5 и Пример 11-13)

$#

количество аргументов командной строки[ 20 ], или позиционных параметров (см. Пример 33-2)

$*

Все аргументы в виде одной строки (слова)

$@

То же самое, что и $*, но при этом каждый параметр представлен как отдельная строка (слово), т.е. параметры не подвергаются какой либо интерпретации.

<p><strong>Пример 9-6. arglist: Вывод списка аргументов с помощью переменных $* и $@</strong></p>

#!/bin/bash

# Вызовите сценарий с несколькими аргументами, например: "один два три".

E_BADARGS=65

if [ ! -n "$1" ]

then

echo "Порядок использования: `basename $0` argument1 argument2 и т.д."

exit $E_BADARGS

fi

echo

index=1

echo "Список аргументов в переменной \"\$*\":"

for arg in "$*" # Работает некорректно, если "$*" не ограничена кавычками.

do

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

let "index+=1"

done # $* воспринимает все аргументы как одну строку.

echo "Полный список аргументов выглядит как одна строка."

echo

index=1

echo "Список аргументов в переменной \"\$@\":"

for arg in "$@"

do

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

let "index+=1"

done # $@ воспринимает аргументы как отдельные строки (слова).

echo "Список аргументов выглядит как набор различных строк (слов)."

echo

exit 0

После команды shift (сдвиг), первый аргумент, в переменной $@, теряется, а остальные сдвигаются на одну позицию "вниз" (или "влево", если хотите).

#!/bin/bash

# Вызовите сценарий в таком виде: ./scriptname 1 2 3 4 5

echo "$@" # 1 2 3 4 5

shift

echo "$@" # 2 3 4 5

shift

echo "$@" # 3 4 5

# Каждая из команд "shift" приводит к потере аргумента $1,

# но остальные аргументы остаются в "$@".

Специальная переменная $@ может быть использована для выбора типа ввода в сценария. Команда cat "$@" позволяет выполнять ввод как со стандартного устройства ввода stdin, так и из файла, имя которого передается сценарию из командной строки. См. Пример 12-17 и Пример 12-18.

Переменные $* и $@, в отдельных случаях, могут содержать противоречивую информацию! Это зависит от содержимого переменной $IFS.

<p><strong>Пример 9-7. Противоречия в переменных $* и $@</strong></p>

#!/bin/bash

# Демонстрация противоречивости содержимого внутренних переменных "$*" и "$@",

#+ которая проявляется при изменении порядка заключения параметров в кавычки.

# Демонстрация противоречивости, проявляющейся при изменении

#+ содержимого переменной IFS.

set -- "Первый один" "второй" "третий:один" "" "Пятый: :один"

# Установка аргументов $1, $2, и т.д.

echo

echo 'IFS по-умолчанию, переменная "$*"'

c=0

for i in "$*" # в кавычках

do echo "$((c+=1)): [$i]" # Эта строка остается без изменений во всех циклах.

# Вывод аргументов.

done

echo ---

echo 'IFS по-умолчанию, переменная $*'

c=0

for i in $* # без кавычек

do echo "$((c+=1)): [$i]"

done

echo ---

echo 'IFS по-умолчанию, переменная "$@"'

c=0

for i in "$@"

do echo "$((c+=1)): [$i]"

done

echo ---

echo 'IFS по-умолчанию, переменная $@'

c=0

for i in $@

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

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

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

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

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

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

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

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

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