set command with – flag

У меня есть файл (называемый текстом), который содержит два поля строк (разделенных пробелом), как и следующее:

1.2.3 version1 

Когда я использую команду set следующим образом, у меня есть первое поле в поле $ 1 и второе поле в $ 2. Может кто-нибудь объяснить, что делает эта команда? В частности, что? Это перенаправление ввода?

 set -- $(<text) 

Эта команда объединяет два довольно специальных трюка …

задавать —

Обычно этот параметр используется для настройки параметров оболочки (см. Справочную страницу вашей оболочки). Установлен специальный случай. Это используется для установки позиционных параметров. К сожалению, я забыл, о чем это было, но однажды я прочитал о проблеме, которая не могла быть решена другими способами.

$ (<файл)

$(command) – подстановка команд: оболочка собирает вывод на stdout и заменяет $(command) на этот вывод при выполнении командной строки. Если вам нужно содержимое файла, вы можете сделать это: $(cat file) . $(< file) – это всего лишь короткая версия, сохраняющая ненужный процесс ( cat ).