Spec-Zone.ru › Bash

Разделение слов

​

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

Оболочка рассматривает каждый символ $IFS как разделитель и разбивает результаты остальных подстановок на поля, используя эти символы в качестве разделителей полей.

Символ пробельного символа IFS — это пробельный символ, определённый выше (см. Определения), который присутствует в значении IFS. Пробел, табуляция и перевод строки всегда считаются пробельными символами IFS, даже если они не входят в категорию space текущей локали.

Если переменная IFS не задана, разделение слов выполняется так, как если бы её значением было <space><tab><newline>, а эти символы считались пробельными символами IFS. Если значение IFS пусто, разделение слов не выполняется, но неявные пустые аргументы (см. ниже) всё равно удаляются.

Разделение слов начинается с удаления последовательностей пробельных символов IFS в начале и в конце результатов предыдущих подстановок, после чего оставшиеся слова разделяются.

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

Если IFS содержит непробельный символ, то любой символ в значении IFS, не являющийся пробельным символом IFS, вместе с любыми соседними пробельными символами IFS разделяет поле. Это означает, что соседние разделители, не являющиеся пробельными символами IFS, создают пустое поле. Последовательность пробельных символов IFS также разделяет поле.

Явные пустые аргументы ("" или '') сохраняются и передаются командам как пустые строки. Неявные пустые аргументы без кавычек, возникающие в результате подстановки параметров, не имеющих значений, удаляются. Подстановка параметра без значения внутри двойных кавычек создаёт пустое поле, которое сохраняется и передаётся команде как пустая строка.

Когда пустой аргумент в кавычках является частью слова, подстановка которого даёт непустое значение, разделение слов удаляет часть с пустым аргументом, оставляя непустой результат подстановки. То есть после разделения слов и удаления пустого аргумента слово -d'' становится -d.

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/Word-Splitting.html

Spec-Zone.ru

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