Простой ответ: Вы не можете. echo
(будьте этим, окружают встроенный или регулярный двоичный файл), не обрабатывает его стандартный вход - это - один путь только.
Взятый от Bash FAQ:
Я установил переменные в цикле, это находится в конвейере. Почему они исчезают после того, как цикл завершается?
Причина этого потенциально удивительного поведения, как описано выше, состоит в том, что каждый SubShell представляет новый переменный контекст и среду. Цикл с условием продолжения выше выполняется в новой подоболочке с ее собственной копией переменной linecount созданный с начальным значением '0' взятых от родительской оболочки. Эта копия затем используется для подсчета. То, когда цикл с условием продолжения закончен, копия подоболочки отбрасывается, и исходная переменная linecount родителя (чье значение не изменилось), используется в команде эха.
Для предотвращения подоболочки от того, чтобы быть созданным во втором цикле можно подать данные к нему способами кроме через канал:
while read snack; do
FILES+=($snack)
done < <(find /var/candy -name "chocolate_[0-9]")
.
while read snack; do
FILES+=($snack)
done <<<"$(find /var/candy -name "chocolate_[0-9]")"