Если бы это был я, я бы отметить Ваш энтузиазм, но тот факт, что вы не связались с указывает мне, что позиция была заполнена внутренне. Обычно мы не отправить Дорогой Джон/Dear Джейн письма, пока новый сотрудник занимает должность, поэтому его можно до месяца для вас отрицательные ответы, чтобы вам послали. @MarkJ аспирантов _are_ исследователей. Чувак. @Давид точно, и вот почему я сказал "качество" в дополнение к "сумме" - я именно имел в виду не только качество в смысле, насколько хорошо работа выполнена, но, по сути, "какого качества" вклад был. По ссылке: в режиме работы по умолчанию, если стандартный вывод не является терминалом, Общ отделяет имена с символами новой строки. Это нормально, пока у вас есть файл с новой строки в имени. @MadHatter они могут также просто снести его без вас в самолете, но мы говорим о чем-то другом, чем камера пособия потом. Не связанных с поездками, но почему бы вам не печатать их в формате PDF, а затем распечатать этот один физически, как вам угодно?

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

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

# создать входной файл
кошка <<ВФ > demo.txt
а
б
с
ВФ

# создать функцию "обертки" для /usr/Бен/присоединяйтесь
my_join_fn () {
 /usr/Бен/объединение "$@"
}
кот <(my_join_fn <(кот demo.txt) <(кошка demo.txt))
кот <(my_join_fn <(кот demo.txt) <(кошка demo.txt)) | руководитель -1

# создать функцию "обертки" для /usr/местные/Бен/gjoin, порт
Функция # присоединяйтесь GNU-программа для ОС Х
my_gjoin_fn () {
 /usr/местные/Бен/gjoin "$@"
}
кот <(my_gjoin_fn <(кот demo.txt) <(кошка demo.txt))
кот <(my_gjoin_fn <(кот demo.txt) <(кошка demo.txt)) | руководитель -1

# показать версию ЗШ
$Шелл-версия

Если один из источников этот скрипт (под ЗШ), он завершается успешно, и производит следующий (правильный) выход:

% источник demo.sh
а
б
с
а
а
б
с
а
ЗШ 5.0.2 (x86_64 с-яблоко-darwin11.4.2)

Но если кто-то повторно выполняется непосредственно из командной строки, либо одно из двух строчек в скрипте, которые заканчиваются | руководитель -1, получает неверный дескриптор файла ошибка:

% кот <(my_join_fn <(кошка demo.txt) <(кошка demo.txt)) | руководитель -1
присоединяйтесь: на /dev/ФД/11: неверный дескриптор файла
% кот <(my_gjoin_fn <(кошка demo.txt) <(кошка demo.txt)) | руководитель -1
/usr/местные/Бен/gjoin в /dev/ФД/11: неверный дескриптор файла

Только эти две строчки в скрипт, который выдает ошибку, если запускать непосредственно в командной строке.

Как указано в выводе $Шелл-версия, результаты, показанные выше, были получены под OS X, но я получаю аналогичные результаты, когда я выполнить аналогичные испытания под Linux:

% кот <(my_join_fn <(кошка demo.txt) <(кошка demo.txt)) | руководитель -1
/usr/Бен/присоединиться: в /proc/самоуправления/ФД/11: Нет такого файла или каталога
% $Шелл-версия
ЗШ 4.3.10 (x86_64 с-неизвестно-линукс-дистрибутив GNU)

Я не смог воспроизвести эту ошибку под Баш (ОС OS X или Linux). Это заставляет меня подозревать, что ошибка происходит из-за ошибки в ЗШ. Но, если это так, то это чрезвычайно заумными ошибка, и таким образом не может быть исправлено в ближайшее время.

Поэтому я бы хотел найти обходной путь. Мой вопрос:

Как я должен изменить определение функции-обертки my_gjoin_fn , с тем чтобы избежать этой ошибки?

(В реальной жизни коллегой по my_gjoin_fn практически идентичен приведенному выше, отличаются только включением флага на вызов gjoin:

my_gjoin_fn () {
 /usr/местные/Бен/gjoin -т$'\т' "$@"
}

Я использую эту оболочку оболочку функционировать все время, поэтому я бы очень хотел, чтобы "спасти" его.)

Редактировать:

Ошибка сохраняется даже если я заменю | глава -1 в конце команды | руководителя -10, | кошки, | тройник /dev/нуль, | :и т. д. Е. Г.:

% кот <(my_join_fn <(кошка demo.txt) <(кошка demo.txt)) | кот
/usr/Бен/присоединиться: в /proc/самоуправления/ФД/11: Нет такого файла или каталога

Кроме того, добавление ЛС-л /тр/самоуправления/ФД, как полагают ТБО, производит следующие действия:

% кот <(ЛС-л /тр/самоуправления/ФД; my_join_fn <(кошка demo.txt) <(кошка demo.txt)) | кот
всего 0
lrwx------ 1 Джонс Джонс 64 21 августа 12:29 0 -> /Дев/оч/18
л-серии WX------ 1 Джонс Джонс 64 21 августа 12:29 1 -> трубы:[312539706]
lrwx------ 1 Джонс Джонс 64 21 августа 12:29 2 -> /Дев/оч/18
ЛР-х------ 1 Джонс Джонс 64 21 августа 12:29 3 - > в /proc/23849/ФД
/usr/Бен/присоединиться: в /proc/самоуправления/ФД/11: Нет такого файла или каталога

...что не сказать мне много, но может быть более информативным для других. Чистки рядов, произведено продукции Общ -л /тр/самоуправления/ФД подкоманда выглядит одинаково ли я запустить это под ЗШ или под Баш. Кроме того, чистки рядов, выход ЛС-л /тр/самоуправления/ФД при запуске сама по себе

% Общ -л /тр/самоуправления/ФД
всего 0
lrwx------ 1 Джонс Джонс 64 21 августа 12:32 0 -> /Дев/оч/18
lrwx------ 1 Джонс Джонс 64 21 августа 12:32 1 -> /Дев/оч/18
lrwx------ 1 Джонс Джонс 64 21 августа 12:32 2 -> /Дев/оч/18
ЛР-х------ 1 Джонс Джонс 64 21 августа 12:32 3 - > в /proc/5246/ФД