Intereting Posts
как заменить выражение sed (изменить и распечатать только согласованную строку) с выражением perl? Webmin перестала работать после обновления до Stretch Сценарий оболочки не работает, чтобы открыть LimeChat через терминал Изменение раскладки клавиатуры при использовании клавиатуры или другого Как распечатать только первое совпадение из каждой строки? Могу ли я получить доступ к закладкам Наутилуса в терминале? переход из режима пользователя в режим ядра Рекомендации для SSH, агента tmux & GnuPG Поддерживается ли Уби? Как предоставить привилегии конкретного использования другому пользователю в Debian? Разделение gzip-файла на более мелкие gz-файлы без повторного сжатия Выполните команду для всех файлов в дереве каталогов и поместите вывод в переменную Нет сетевого подключения в CentOS 6.3 Минимальное значение в разделе VMWare Player Проблема с выпуском Debian Squeeze apt-get с репозиториями HWRAID Дубликаты в истории bash

Почему существует ключевое слово bash перед некоторыми heredocs?

В некоторых heredocs вы видите ключевое слово bash перед открывателем (<<), именем и файловым дескриптором. Например:

bash /dev/fd/10 10<<'SES' 

Почему там Баш? Я имею в виду, что мы уже работаем в Bash, и это не похоже на то, что cat использовала для отображения текста, а затем перенаправляла его в другой файл, как в cat << EOT >> /file.txt поэтому я спрашиваю как первокурсника, почему нам нужно ключевое слово Баш там.

    bash нет ключевого слова, это команда, выполняемая. Это передается аргумент /dev/fd/10 . Среда, запускающая скрипт (который может быть или не может быть bash), устанавливает heredoc для чтения из дескриптора файла 10.

    Итак, bash вызывается для запуска heredoc в качестве сценария оболочки. Это похоже на то, что строка читает bash /path/to/script.sh – в этом случае сценарий только начинается с heredoc.

    Почему кто-то это сделал (вместо того, чтобы просто использовать ( commands ) невозможно ответить без контекста (и, возможно, и с историей). Одна догадка (как предполагает DopeGhoti) заключается в том, что скрипт может работать под другой оболочкой, а этот бит требует bash. Другая возможность заключается в том, что автор сценария просто не знал альтернативных методов.

    Что касается того, почему FD 10 используется вместо stdin, это может быть связано с тем, что блок сценария также должен читать из stdin.