История изменений
Исправление intelfx, (текущая версия) :
А это, собственно, башизм. < <(команда)
— «process substitution», пайплайн наоборот. Разница в том, что помещается в сабшелл, а что выполняется в основном процессе.
Ну, точнее, «process substitution» — это <(команда)
и эта конструкция раскрывается в имя псевдофайла в /dev, из которого можно читать stdout указанной команды. Соответственно, я из этого псевдофайла перенаправляю стандартный ввод цикла. После подстановки процесса получается что-то вроде
while read filename; do ...; done < /dev/fd/чтототам
Здесь на самом деле пофигу (можно обойтись и обычным пайплайном), но я по привычке всегда пишу так, чтобы при дальнейшей модификации скрипта не словить неочевидный баг, связанный с тем, что в случае обычного пайплайна цикл выполняется в сабшелле и никакие изменения переменных в этом цикле не остаются в силе после его завершения.
Исходная версия intelfx, :
А это, собственно, башизм. < <(команда)
— «process substitution», пайплайн наоборот. Разница в том, что помещается в сабшелл, а что выполняется в основном процессе.
Ну, точнее, «process substitution» — это <(команда)
и эта конструкция раскрывается в имя псевдофайла в /dev, из которого можно читать stdout указанной команды. Соответственно, я из этого псевдофайла перенаправляю стандартный ввод цикла.
Здесь на самом деле пофигу (можно обойтись и обычным пайплайном), но я по привычке всегда пишу так, чтобы при дальнейшей модификации скрипта не словить неочевидный баг, связанный с тем, что в случае обычного пайплайна цикл выполняется в сабшелле и никакие изменения переменных в этом цикле не остаются в силе после его завершения.