Подстановка входного процесса bash / zsh дает синтаксическую ошибку в сочетании с while

Они работают нормально и делают то, что должны (распечатать содержимое файла foo):

cat <foo
while read line; do echo $line; done <foo
cat <(cat foo)

Однако это дает мне синтаксическую ошибку в zsh:

zsh$ while read line; do echo $line; done <(cat foo)
zsh: parse error near `<(cat foo)'

и bash:

bash$ while read line; do echo $line; done <(cat foo)
bash: syntax error near unexpected token `<(cat foo)'

Кто-нибудь знает причину и, возможно, обходной путь?

Примечание: это, очевидно, игрушечный пример. В реальном коде мне нужно, чтобы тело цикла while выполнялось в основном процессе оболочки, поэтому я не могу просто использовать

cat foo | while read line; do echo $line; done
6
задан Mika Fischer 17 January 2012 в 15:20
поделиться