Ваш переводчик должен быть #!/bin/bash
, а не #!/bin/sh
, и / или вы должны запустить скрипт с bash scriptname
вместо sh scriptname
.
Почему?
Оболочка POSIX не обеспечивает замена процесса . Подстановка процессов (например, < <(...)
) является башизмом и недоступна в оболочке POSIX. Итак, ошибка:
syntax error near unexpected token('
говорит вам, что как только скрипт попадает в оператор done
и пытается найти файл, перенаправленный на l oop, он находит '('
и дросселирует. (это также говорит нам о том, что вы вызываете свой скрипт с оболочкой POSIX вместо bash - и теперь вы знаете, почему)