Какие специальные параметры оболочки (bash)?

2 ответа

Ссылаясь на 3.4.2 Специальные параметры из Справочного руководства Bash.

Специальные параметры:

  • $ *

    ($ *) Расширяется до позиционных параметров, начиная с единицы. Если раскрытие не заключено в двойные кавычки, каждый позиционный параметр заменяется отдельным словом. В контекстах, где это выполняется, эти слова подлежат дальнейшему разделению на слова и расширению имени пути. Когда раскрытие происходит в двойных кавычках, оно расширяется до одного слова со значением каждого параметра, разделенным первым символом специальной переменной IFS. То есть «$ *» эквивалентно «$ 1c $ 2c…», где c - это первый символ значения переменной IFS. Если IFS не задан, параметры разделяются пробелами. Если IFS имеет значение NULL, параметры объединяются без промежуточных разделителей.

  • $ @

    ($ @) Расширяется до позиционных параметров, начиная с единицы. Когда раскрытие происходит в двойных кавычках, каждый параметр заменяется отдельным словом. То есть «$ @» эквивалентно «$ 1», «$ 2»…. Если расширение в двойных кавычках встречается внутри слова, расширение первого параметра объединяется с начальной частью исходного слова, а расширение последнего параметра объединяется с последней частью исходного слова. Когда нет позиционных параметров, «$ @» и $ @ заменяются на ничего (т. Е. Удаляются).

  • $ #

    ($ #) Заменяется на количество позиционных параметров в десятичном формате.

  • $?

    ($?) Расширяется до состояния выхода последнего выполненного конвейера переднего плана.

  • $ -

    ($ -, дефис.) Расширяется до текущих флагов опций, указанных при вызове встроенной командой set или установленных самой оболочкой (например, опцией -i).

  • $$

    ($$) Заменяется на идентификатор процесса оболочки. В подоболочке () он расширяется до идентификатора процесса вызывающей оболочки, а не до подоболочки.

  • $!

    ($!) Заменяется на идентификатор процесса задания, которое последним было переведено в фоновый режим, независимо от того, выполняется ли оно как асинхронная команда или с помощью встроенной функции bg (см. Встроенные средства управления заданием ).

  • $ 0

    ($ 0) Заменяется на имя оболочки или сценария оболочки. Это устанавливается при инициализации оболочки. Если Bash вызывается с файлом команд (см. Shell Scripts ), в качестве имени этого файла устанавливается $ 0. Если Bash запускается с параметром -c (см. Вызов Bash ), тогда $ 0 устанавливается в качестве первого аргумента после строки, которая должна быть выполнена, если таковой присутствует. В противном случае устанавливается имя файла, используемое для вызова Bash, как указано нулевым аргументом.

  • $ _

    ($ _, знак подчеркивания.) При запуске оболочки задается абсолютный путь, используемый для вызова оболочки или выполняемого сценария оболочки, как передано в среде или списке аргументов. Впоследствии после раскрытия расширяется до последнего аргумента предыдущей команды. Также задайте полный путь, используемый для вызова каждой выполненной команды и помещенной в среду, экспортированную для этой команды. При проверке почты этот параметр содержит имя почтового файла.


Это также можно распечатать со страницы руководства bash:

$ man bash | awk '/Special Parameters$/','/Shell Variables$/'

Надеюсь, это поможет всем (включая новых пользователей) получить информацию / знания о специальных параметрах в (bash) оболочке

15
27.01.2020, 20:09

в соответствии с руководством по сценариям на Bash .

Идентификатор процесса (PID) самого сценария . Переменная $$ часто используется в сценариях для создания «уникальных» имен временных файлов. если вы запустите echo $$ в скрипте, вы увидите, что вывод отличается от PID текущей оболочки.

2
27.01.2020, 20:09

Теги

Похожие вопросы