Spec-Zone.ru › Bash

Простая расшифровка команд

При выполнении простой команды оболочка выполняет следующие расширения, присваивания и перенаправления слева направо в следующем порядке.

  1. Слова, помеченные парсером как присваивания переменных (те, что предшествуют имени команды) и перенаправления, сохраняются для последующей обработки.
  2. Слова, которые не являются присваиваниями переменных или перенаправлениями, расширяются (см. Расширения оболочки). Если после расширения остаются какие-либо слова, первое слово рассматривается как имя команды, а оставшиеся слова — как аргументы.
  3. Перенаправления выполняются, как описано выше (см. Перенаправления).
  4. Текст после ‘=’ в каждом присваивании переменной подвергается расширению тильды, расширению параметров, подстановке команд, арифметическому расширению и удалению кавычек перед присваиванием переменной.

Если имя команды не получается, присваивания переменных влияют на текущую среду оболочки. В случае такой команды (состоящей только из операторов присваивания и перенаправлений) операторы присваивания выполняются до перенаправлений. В противном случае переменные добавляются в среду выполняемой команды и не влияют на текущую среду оболочки. Если какое-либо из присваиваний пытается присвоить значение переменной только для чтения, возникает ошибка, и команда завершается с ненулевым статусом.

Если имя команды не получается, перенаправления выполняются, но не влияют на текущую среду оболочки. Ошибка перенаправления приводит к завершению команды с ненулевым статусом.

Если после расширения остаётся имя команды, выполнение продолжается, как описано ниже. В противном случае команда завершается. Если одно из расширений содержало подстановку команды, код завершения команды — это код завершения последней выполненной подстановки команды. Если подстановок команд не было, команда завершается со статусом ноль.

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/Simple-Command-Expansion.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API