Если я правильно понял, у вас fields.txt
файл с большим количеством строк. У вас есть несколько файлов res-0-n-0
. И для каждой строки в fields.txt
вам нужно скопировать их в results.txt
с содержимым файла res-0-<line_number>
, если он существует.
Я думаю, что вы можете просто читать файл fields.txt
построчно и отображать строку в файле results.txt
с содержимым файла res-0-<line_number>
, если это необходимо.
Я бы выбрал что-то вроде этого:
#! /bin/sh
LINE_NUMBER=0
while read line;
do
if [ -f "res-0-$LINE_NUMBER-0" ]
then
echo "$line $(cat res-0-$LINE_NUMBER-0)" >> result.txt
else
echo "$line" >> result.txt
fi
((LINE_NUMBER++))
done < fields.txt
Такое поведение может быть вызвано параметром оболочки nullglob
, который может быть, например, включен в вашем .bashrc
.
Причина в том, что функция _longopt
имеет ошибку в своем определении, которая вызывает такое поведение при включенном _longopt
.
Решение состоит в том, чтобы отключить эту опцию или переопределить функцию _longopt
самостоятельно.
Подобный эффект также описан здесь:Почему nullglob влияет на завершение табуляции? , хотя этот вопрос довольно сложно найти, если только вы не знаете, что этот вариант неисправен.
РЕДАКТИРОВАТЬ :Как указал @fra -san , это известная проблема с bash-completion
. Исправление появилось в версии 2.9
, однако эта версия еще не выпущена для Fedora (и, возможно, для других систем ).