Позиционные параметры
Тема дорожной карты · Bash
Позиционные параметры — это аргументы, передаваемые Bash-скрипту или функции, доступные как $1, $2, $3 и так далее; $0 содержит имя самого скрипта. Специальные переменные: $# даёт общее количество позиционных параметров, $@ раскрывается во все аргументы как отдельные слова в кавычках, а $* — во все аргументы как одно слово; понимание разницы между "$@" и "$*" является базовой практикой написания Bash-скриптов, поскольку "$@" сохраняет границы слов, тогда как "$*" объединяет аргументы первым символом IFS. В функциях Bash позиционные параметры являются локальными для вызова функции, поэтому $1 внутри функции ссылается на её первый аргумент, а не на аргумент скрипта, обеспечивая чистую инкапсуляцию в скриптах автоматизации Linux. Встроенная команда shift сдвигает позиционные параметры влево, так что $2 становится $1, что полезно при обработке неизвестного числа аргументов в цикле. Корректная обработка позиционных параметров необходима для написания гибких и многократно используемых Bash-скриптов в Linux.
Как это работает
Позиционные параметры: встроенный getopts парсит короткие опции (-a -b value -c). Для длинных (--verbose) + сложного парсинга — внешний getopt (GNU) или ручной while-цикл над "$@" с case. Конвенция: -- разделяет опции от позиционных аргументов; -h / --help показывает usage. Инструмент argbash генерирует парсеры из декларативной спеки.
Когда применять
getopts — для простых скриптов с парой single-letter опций. Ручной парсер — когда нужны long-options + несколько позиционных аргументов. Всегда печатайте usage на -h или плохой input — будущий вы спасибо скажет. Валидируйте required-args рано; падайте с понятной ошибкой.
Типичные ошибки
Ловушки Позиционные параметры: путаница getopts (встроенный, только short opts) и getopt (внешний, long opts только в GNU); неверная обработка -- (позиционные args с - парсятся как опции); нет usage на ошибке (юзеру читать ваш код, чтобы понять args).