LINUX.ORG.RU

История изменений

Исправление intelfx, (текущая версия) :

А это, собственно, башизм. < <(команда) — «process substitution», пайплайн наоборот. Разница в том, что помещается в сабшелл, а что выполняется в основном процессе.

Ну, точнее, «process substitution» — это <(команда) и эта конструкция раскрывается в имя псевдофайла в /dev, из которого можно читать stdout указанной команды. Соответственно, я из этого псевдофайла перенаправляю стандартный ввод цикла. После подстановки процесса получается что-то вроде

while read filename; do ...; done < /dev/fd/чтототам

Здесь на самом деле пофигу (можно обойтись и обычным пайплайном), но я по привычке всегда пишу так, чтобы при дальнейшей модификации скрипта не словить неочевидный баг, связанный с тем, что в случае обычного пайплайна цикл выполняется в сабшелле и никакие изменения переменных в этом цикле не остаются в силе после его завершения.

Исходная версия intelfx, :

А это, собственно, башизм. < <(команда) — «process substitution», пайплайн наоборот. Разница в том, что помещается в сабшелл, а что выполняется в основном процессе.

Ну, точнее, «process substitution» — это <(команда) и эта конструкция раскрывается в имя псевдофайла в /dev, из которого можно читать stdout указанной команды. Соответственно, я из этого псевдофайла перенаправляю стандартный ввод цикла.

Здесь на самом деле пофигу (можно обойтись и обычным пайплайном), но я по привычке всегда пишу так, чтобы при дальнейшей модификации скрипта не словить неочевидный баг, связанный с тем, что в случае обычного пайплайна цикл выполняется в сабшелле и никакие изменения переменных в этом цикле не остаются в силе после его завершения.