Специальные параметры
Командный интерпретатор обрабатывает ряд параметров специальным образом. Можно только ссылаться на значения этих параметров - присваивания им не разрешены.
* | Заменяется позиционными параметрами, начиная с первого. Когда такая замена выполняется в двойных кавычках, результат будет одним словом, в котором значения параметров разделены первым символом значения специальной переменной IFS. То есть, "$*" эквивалентно "$1c$2c...", где c - первый символ значения переменной IFS. Если переменная IFS не установлена, значения параметров разделяются пробелами. Если переменная IFS имеет пустое значение, значения параметров просто конкатенируются, без разделителей. |
@ | Заменяется позиционными параметрами, начиная с первого. Когда такая замена выполняется в двойных кавычках, каждый параметр заменяется отдельным словом. То есть, "$@" эквивалентно "$1" "$2" ... Когда позиционных параметров нет, "$@" и $@ заменяются пустой строкой (т.е. они просто удаляются). |
# | Заменяется десятичным значением количества позиционных параметров. |
? | Заменяется статусом последнего выполненного в приоритетном режиме конвейера. |
- | Заменяется флагами текущих опций, заданных при вызове, с помощью встроенной команды или установленных самим командным интерпретатором (как, например, опция ). |
$ | Заменяется идентификатором процесса командного интерпретатора. В порожденном командном интерпретаторе, запущенном с помощью (), заменяется идентификатором процесса основного интерпретатора, а не порожденного. |
! | Заменяется идентификатором последнего процесса, запущенного в фоновом (асинхронном) режиме. |
0 | Заменяется именем командного интерпретатора или сценария. Это значение устанавливается при инициализации командного интерпретатора. Если bash вызван с командным файлом, $0 будет установлен равным имени этого файла. Если bash запущен с опцией , $0 получает значение первого аргумента после строки, которую надо выполнить, если он задан. В противном случае, этот специальный параметр получает значение имени файла, использованного для вызова bash, которое задается нулевым аргументом. |
_ | При запуске командного интерпретатора устанавливается равным полному имени файла (absolute file name) командного интерпретатора или выполняемого сценария, переданного в списке аргументов. В последствии, заменяется последним аргументом предыдущей команды, с учетом всех замен. Также устанавливается равным полному имени файла каждой выполняемой внешней команды и помещается в среду, экспортируемую для этой команды. При проверке почты этот параметр содержит имя проверяемого файла почты. |