Как работает "var=>(...) somecommand"?

  #1   
   f() {
        cat "$1" >"$x"
    }
  #2   
    x=>(tr '[:lower:]' '[:upper:]') f <(echo 'hi there')

В #2 какая часть исполняется первой? x=>(tr '[:lower:]' '[:upper:]') или е <(echo 'hi there'), #2 является составным соединением или единственной командой?

1 ответ

Решение

Одна команда может иметь любое количество var=value префиксы; эти переменные экспортируются в среду на время выполнения этой единственной команды и не существуют позже. Это не относится к bash, но является частью стандарта POSIX sh.

"Какая часть исполняется первой?" не значимый вопрос. Подстановка процесса, чье имя файла FIFO (будучи /dev/fd запись и анонимный FIFO, если ОС разрешает то же самое) сохраняется в X, запускается первым, но выполнение выполняется асинхронно. (Тем не менее, потому что выход процесса записи подстановки hi there перенаправляется как вход для того, кто работает trодин с echo обязательно блокирует до tr готов прочитать что пишет).

Другие вопросы по тегам