Подстановка команд, Арифметические расширение и Процесс замены в bash

Подстановка команд

Подстановка команд позволяет ввод команды, для замены имени команды. Существуют две формы:

$(команда)

или

`команда`

Bash выполняет расширения выполняя команду и замену подстановки команд со стандартным вводом команд, любой символ перевода строки удаляется. Переводы строк не удаляются, но они могут быть удалены во время разбиения на слова. Подстановка команд $(cat файл) может быть заменён эквивалентным, но более быстрым $(< файл).

Когда используется старый стиль обратной формы кавычки «» замещения, обратная косая черта сохраняет свой буквальный смысл, за исключением тех случаев когда последующий «$», «» или «\». Первая обратная кавычка «» которой не предшествует обратная косая черта завершает подстановки команд. Когда используется форма $(команда), все символы между скобками составляют команду, ничего не обрабатывается особым образом.

Команды замены могут быть вложенными. Для вложения с использованием формы обратных кавычек «», необходимо избежать внутренних обратных кавычек «» с обратной косой чертой «\».

Если замена применяется в двойных кавычках, разбиение слов и подстановка имен файлов не выполняется с результатами.

Арифметические расширение

Арифметическое расширение позволяет вычислять арифметические выражения и подставлять результат. Формат для арифметических выражений является:

$((выражение))

Старый формат $[выражение] устарел и в следующих версиях bash будет удален. Выражение рассматривается так как если бы оно было заключено в двойные кавычки, но двойные кавычки внутри скобок специально не рассматриваются. Все лексемы в выражении подвергаются расширению параметров, раскрытию строк, подстановке команд и удалению кавчек. Арифметические расширения могут быть вложенными.

Если выражение некорректно, bash выдаст сообщение которое обозначает сбой и замещение не произойдет.

Процесс замены

Процесс замены поддерживается в системах, которые поддерживают именованные каналы (FIFOs) или /dev/fd метод именования открытых файлов. Он принимает форму < (список) или >(список). Список процессов запускается с его входа или выхода, соединённый с FIFO или некоторым файлом в /dev/fd. Имя этого файла передается в качестве аргумента к текущей команде как результат расширения. Если используется форма >(список), запись в файл будет служить добавлением в список. Если используется форма < (список), то файл передаётся в качестве аргумента который следует читать чтобы получить выход списка.

Процесс замещения осуществляется одновременно с расширениями параметров и переменных, подстановкой команд и арифметических выражений.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *