Пример 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.
Переменные $* и $@, в отдельных случаях, могут содержать противоречивую информацию! Это зависит от содержимого переменной $IFS.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Вывод списка фоновых задач
Вывод списка фоновых задач Программа 6.5 реализует функцию управления задачами DisplayJobs.Программа 6.5. JobMgt: отображение списка активных задач BOOL DisplayJobs(void)/* Просмотреть файл базы данных, сообщить статус задачи. */{ HANDLE hJobData, hProcess; JM_JOB JobRecord; DWORD JobNumber = 0, nXfer, ExitCode, FsLow, FsHigh; TCHAR
A.1. Вывод списка правил
A.1. Вывод списка правил Чтобы вывести список правил нужно выполнить команду iptables с ключом L, который кратко был описан ранее в главе Как строить правила. Выглядит это примерно так:iptables -LЭта команда выведет на экран список правил в удобочитаемом виде. Номера портов будут
Пример: обработка связного списка
Пример: обработка связного списка Если осуществима передача необязательных данных, мы можем расширить возможности указателей в XDR и использовать их для кодирования и декодирования связных списков, содержащих произвольное количество элементов. В нашем примере
Получение списка аргументов
Получение списка аргументов Многие VBA-процедуры требуют, чтобы при их выполнении были определены один или несколько аргументов. Такие процедуры используют в своих вычислениях (или других выполняемых ими действиях) информацию, содержащуюся в этих аргументах. Подобно
5.11. Пример связанного списка
5.11. Пример связанного списка Мы завершали главы 3 и 4 примерами для введения читателя в механизм классов С++. В конце этого раздела мы покажем, как разработать класс, представляющий собой односвязный список. (В главе 6 мы рассмотрим двусвязный список, являющийся частью
Пример 10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд
Пример 10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд #!/bin/bash# уЩЫЬ for гЯ [гаЩгЫЯЭ], гЯкФСЮЮйЭ г аЯЭЯниР аЯФгдСЮЯзЫЩ ЫЯЭСЮФ.NUMBERS="9 7 3 8 37.53"for number in `echo $NUMBERS` # for number in 9 7 3 8 37.53do echo -n "$number "doneecho exit 0Более сложный пример использования подстановки
Пример 11-14. Изменение значений позиционных параметров (аргументов)
Пример 11-14. Изменение значений позиционных параметров (аргументов) #!/bin/bashvariable="one two three four five"set -- $variable# Значения позиционных параметров берутся из "$variable".first_param=$1second_param=$2shift; shift # сдвиг двух первых параметров.remaining_params="$*"echoecho "первый параметр = $first_param" # oneecho "второй
Пример 12-20. Пример форматирования списка файлов в каталоге
Пример 12-20. Пример форматирования списка файлов в каталоге #!/bin/bash# За основу сценария взят пример "man column".(printf "PERMISSIONS LINKS OWNER GROUP SIZE DATE TIME PROG-NAME " ; ls -l | sed 1d) | column -t# Команда "sed 1d" удаляет первую строку, выводимую командой ls,#+ (для локали "С" это строка: "total N",#+ где "N" -- общее
Пример 24-1. Проверка аргументов командной строки с помощью "И-списка"
Пример 24-1. Проверка аргументов командной строки с помощью "И-списка" #!/bin/bash# "И-список"if [ ! -z "$1" ] && echo "Аргумент #1 = $1" && [ ! -z "$2" ] && echo "Аргумент #2 = $2"then echo "Сценарию передано не менее 2 аргументов." # Все команды в цепочке возвращают true.else echo "Сценарию передано менее 2
Пример 24-2. Еще один пример проверки аргументов с помощью "И-списков"
Пример 24-2. Еще один пример проверки аргументов с помощью "И-списков" #!/bin/bashARGS=1 # Ожидаемое число аргументов.E_BADARGS=65 # Код завершения, если число аргументов меньше ожидаемого.test $# -ne $ARGS && echo "Порядок использования: `basename $0` $ARGS аргумент(а)(ов)" && exit $E_BADARGS# Если
18.5.2. Вывод на экран строки списка
18.5.2. Вывод на экран строки списка Ниже приводится цикл for, список которого содержит строку значений "orange red blue grey". Для каждой переменной указана команда echo, в качестве параметра имя_переменной указывается loop. Команда echo с помощью части $LOOP выводит на экран каждое значение
Практическая работа 51. Отбор записей из списка с помощью фильтра
Практическая работа 51. Отбор записей из списка с помощью фильтра Задание 1. Отобрать в прайс-листе (см. рис. 6.65) только товары, которые имеются на складе.Последовательность выполнения1. Откройте список товаров, который сохранен под именем Товары на складе (см. рис. 6.65).2. В