Передача файла через pygmentize
-f terminal
попытается обнаружить тип от имени файла и выделить его соответственно.
Это - известная ловушка удара, из-за этой функции:
Каждая команда в конвейере выполняется как отдельный процесс (т.е. в подоболочке).
так, чтобы измененные переменные были локальны для подоболочки и не видимы однажды назад в родителе.
Чтобы избежать что, перефразируйте свой код для предотвращения конвейера с заменой процесса:
for arg in "$@"
do
readlink -e "$arg" || (( ++r ))
done > >(sort -u)
| sort -u
вызывает предыдущий бит (таким образом, целое для цикла) для выполнения в подпроцессе (удару нужен 'STDOUT' для перенаправления в sort
'STDIN'. (Интернет, кажется, думает ksh
и bash
обработайте этот случай немного по-другому.. первая или последняя команда в последовательности канала помещается в подоболочку?)
Этот поток пробегается через подобную проблему и имеет аккуратное решение в конце: http://ubuntuforums.org/showthread.php?t=312017
выборка#!/bin/bash exec 3< <(du | sort -n) n=0 while read size dir; do [ $size -gt 1000 ] && ((n++)) done <&3 exec 3<&- echo "Found $n too big files"
>(..command..)
создать. Я думаю, что знаю, как это работает, но чувство я должен сделать некоторые дополнительные материалы для чтения. – tjm 30.09.2011, 12:07