Специальные параметры
Оболочка обрабатывает несколько параметров особым образом. К этим параметрам можно только обратиться; присваивание им не разрешено.
*-
($*) Расширяется до позиционных параметров, начиная с первого. Когда расширение происходит вне двойных кавычек, каждый позиционный параметр расширяется в отдельное слово. В контекстах, где это выполняется, эти слова подвергаются дальнейшему разделению слов и расширению имён файлов. Когда расширение происходит внутри двойных кавычек, оно расширяется в одно слово, где значение каждого параметра разделено первым символом переменной
IFS. То есть,"$*"эквивалентно"$1c$2c…", где c — первый символ значения переменнойIFS. ЕслиIFSне установлена, параметры разделяются пробелами. ЕслиIFSпуста, параметры объединяются без разделителей. @-
($@) Расширяется до позиционных параметров, начиная с первого. В контекстах, где выполняется разделение слов, каждый позиционный параметр расширяется в отдельное слово; если не внутри двойных кавычек, эти слова подвергаются разделению слов. В контекстах, где разделение слов не выполняется, это расширяется в одно слово, где каждый позиционный параметр разделяется пробелом. Когда расширение происходит внутри двойных кавычек, и выполняется разделение слов, каждый параметр расширяется в отдельное слово. То есть,
"$@"эквивалентно"$1" "$2" …. Если расширение в двойных кавычках происходит внутри слова, расширение первого параметра присоединяется к начальной части исходного слова, а расширение последнего параметра присоединяется к последней части исходного слова. Когда нет позиционных параметров,"$@"и$@расширяются до ничего (т. е. они удаляются). #-
($#) Расширяется до количества позиционных параметров в десятичной форме.
?-
($?) Расширяется до кода возврата последней выполненной фоновой команды.
--
($-, дефис.) Расширяется до текущих флагов опций, указанных при вызове, командой
setили установленными самой оболочкой (например, опцией -i). $-
($$) Расширяется до идентификатора процесса оболочки. В подоболочке расширяется до идентификатора процесса вызывающей оболочки, а не подоболочки.
!-
($!) Расширяется до идентификатора процесса последней команды, помещенной в фоновый режим, будь то выполненная как асинхронная команда или с использованием команды
bg(см. Команды управления задачами). 0-
($0) Расширяется до имени оболочки или скрипта оболочки. Это устанавливается при инициализации оболочки. Если Bash вызывается с файлом команд (см. Скрипты оболочки),
$0устанавливается в имя этого файла. Если Bash запускается с опцией -c (см. Вызов Bash), то$0устанавливается в первый аргумент после строки, подлежащей выполнению, если он имеется. В противном случае, он устанавливается в имя файла, используемого для вызова Bash, заданный нулевым аргументом.
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/Special-Parameters.html