Простая расшифровка команд
При выполнении простой команды оболочка выполняет следующие расширения, присваивания и перенаправления слева направо в следующем порядке.
- Слова, помеченные парсером как присваивания переменных (те, что предшествуют имени команды) и перенаправления, сохраняются для последующей обработки.
- Слова, которые не являются присваиваниями переменных или перенаправлениями, расширяются (см. Расширения оболочки). Если после расширения остаются какие-либо слова, первое слово рассматривается как имя команды, а оставшиеся слова — как аргументы.
- Перенаправления выполняются, как описано выше (см. Перенаправления).
- Текст после ‘=’ в каждом присваивании переменной подвергается расширению тильды, расширению параметров, подстановке команд, арифметическому расширению и удалению кавычек перед присваиванием переменной.
Если имя команды не получается, присваивания переменных влияют на текущую среду оболочки. В случае такой команды (состоящей только из операторов присваивания и перенаправлений) операторы присваивания выполняются до перенаправлений. В противном случае переменные добавляются в среду выполняемой команды и не влияют на текущую среду оболочки. Если какое-либо из присваиваний пытается присвоить значение переменной только для чтения, возникает ошибка, и команда завершается с ненулевым статусом.
Если имя команды не получается, перенаправления выполняются, но не влияют на текущую среду оболочки. Ошибка перенаправления приводит к завершению команды с ненулевым статусом.
Если после расширения остаётся имя команды, выполнение продолжается, как описано ниже. В противном случае команда завершается. Если одно из расширений содержало подстановку команды, код завершения команды — это код завершения последней выполненной подстановки команды. Если подстановок команд не было, команда завершается со статусом ноль.
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