Шпаргалки / Объяснение

Шпаргалка: сохранять границы аргументов в Bash

Используйте "$@", счётчик $# и массивы, чтобы пробелы и пустые значения не потерялись. Разберите назначение $0 при запуске bash -c.

Начальный6 минОбщие принципы LinuxGNU Coreutils · documented stable optionsBash · pipeline semantics

Когда открыть эту шпаргалку

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

Выбор команды

Позиционные параметры удобны для небольшого интерфейса команды. Изменяйте их через set или shift только там, где это входит в задуманный разбор.

Что выяснитьКоманда или выражениеКак читать результат
Число аргументов$#Пустое значение тоже считается аргументом.
Весь список без склейки"$@"Каждый аргумент раскрывается отдельно.
Один параметр"${1-}"Вариант с резервом при отсутствии первого аргумента.
Начиная с десятого"${10}"Фигурные скобки отделяют номер от первого параметра и текста 0.
Имя в bash -cbash -c 'printf "%s\n" "$0"' markerПервый аргумент после строки кода становится $0.

Короткая последовательность

Три аргумента включают имя с пробелом и пустую строку. Subshell ограничивает изменение позиционных параметров этим примером.

Локальная Linux-система
( set -- 'north box' '' 'ready'; printf 'count=%s\n' "$#"; printf '<%s>\n' "$@" )

Проверка вывода

Сначала выводится count=3, затем три значения в угловых скобках, включая пустые <>. Именно сохранённые границы позволяют отличить два аргумента от одного аргумента с пробелом.

Границы применения

"$*" объединяет параметры через первый символ IFS и решает другую задачу. Не собирайте строку команды конкатенацией пользовательских значений для eval. Если нужен изменяемый список в Bash, используйте массив и раскрытие "${args[@]}".

Технические источники

Использованы для проверки поведения. Объяснения и учебные сценарии созданы для проекта.

  • Руководство bash(1)

Проверка текста: 2026-09-11. Нативное исполнение на всей матрице дистрибутивов ещё не подтверждено.

Примеры для собственной Linux-системы с Bash и указанными утилитами. Наличие пакетов и набор опций проверьте в установленной версии; браузерный терминал поддерживает только своё подмножество.

От материала к практике

Выберите следующую тему в каталоге Linux или проверьте знакомые команды в учебном терминале.

Поиск по Linux

Поиск локальный. ↑ ↓ — перейти к результату, Enter — открыть.

Навигация