Разбиение слов
Оболочка сканирует результаты расширения параметров, подстановки команд и арифметического расширения, которые не произошли в двойных кавычках, для разбиения слов.
Оболочка обрабатывает каждый символ $IFS как разделитель и разбивает результаты других расширений на слова, используя эти символы в качестве разделителей полей. Если IFS не задано или его значение равно ровно <space><tab><newline>, значение по умолчанию, то последовательности <space>, <tab> и <newline> в начале и конце результатов предыдущих расширений игнорируются, а любая последовательность символов IFS не в начале или конце служит для разграничения слов. Если IFS имеет значение, отличное от значения по умолчанию, то последовательности пробельных символов space, tab и newline игнорируются в начале и конце слова, при условии, что пробельный символ находится в значении IFS (символ пробела IFS). Любой символ в IFS, который не является IFS пробельным символом, вместе с любыми смежными IFS пробельными символами, отделяет поле. Последовательность IFS пробельных символов также обрабатывается как разделитель. Если значение IFS равно null, разбиение слов не выполняется.
Явные нулевые аргументы ("" или '') сохраняются и передаются командам как пустые строки. Неопределенные неявные нулевые аргументы, полученные от расширения параметров, не имеющих значений, удаляются. Если параметр без значения расширяется в двойных кавычках, результатом является нулевой аргумент, который сохраняется и передается команде как пустая строка. Когда нулевой аргумент в кавычках появляется как часть слова, чьё расширение не является нулевым, нулевой аргумент удаляется. То есть, слово -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