Автодополнение всегда предлагает файлы в текущем каталоге

Если я правильно понял, у вас 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
2
24.04.2020, 16:47
1 ответ

Такое поведение может быть вызвано параметром оболочки nullglob, который может быть, например, включен в вашем .bashrc.

Причина в том, что функция _longoptимеет ошибку в своем определении, которая вызывает такое поведение при включенном _longopt.

Решение состоит в том, чтобы отключить эту опцию или переопределить функцию _longoptсамостоятельно.

Подобный эффект также описан здесь:Почему nullglob влияет на завершение табуляции? , хотя этот вопрос довольно сложно найти, если только вы не знаете, что этот вариант неисправен.

РЕДАКТИРОВАТЬ :Как указал @fra -san , это известная проблема с bash-completion. Исправление появилось в версии 2.9, однако эта версия еще не выпущена для Fedora (и, возможно, для других систем ).

2
28.04.2021, 23:20

Теги

Похожие вопросы