Как работает "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
готов прочитать что пишет).