Они работают нормально и делают то, что должны (распечатать содержимое файла 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