Книга: Искусство программирования на языке сценариев командной оболочки
Пример 9-6. arglist: Вывод списка аргументов с помощью переменных $* и $@
Пример 9-6. arglist: Вывод списка аргументов с помощью переменных $* и $@
#!/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.
- Пример 9-1. $IFS и пробельные символы
- Пример 9-2. Ограничения времени ожидания ввода
- Пример 9-3. Еще один пример ограничения времени ожидания ввода от пользователя
- Пример 9-4. Ограничение времени ожидания команды read
- Пример 9-5. Я -- root?
- Пример 9-6. arglist: Вывод списка аргументов с помощью переменных $* и $@
- Пример 9-7. Противоречия в переменных $* и $@
- Пример 9-8. Содержимое $* и $@, когда переменная $IFS -- пуста
- Пример 9-9. Переменная "подчеркивание"
- Пример 9-2. Ограничения времени ожидания ввода
- Пример 9-3. Еще один пример ограничения времени ожидания ввода от пользователя
- Пример 9-9. Переменная "подчеркивание"
- Пример установочного скрипта
- Пример из практики
- Повышение производительности приложений с помощью хранимых процедур
- Тестирование Web-сервиса XML с помощью WebDev.WebServer.exe
- Организация пользователей в группы с помощью ролей
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Значения переменных по умолчанию
- Включение и отключение синхронного вывода
- Примеры получения статистики