Что означает «новая строка» в документации bash?

Я думаю, что вы ищете простое итеративное решение вроде этого:

#!/bin/sh
( tmpfile=/tmp/result
  read firstfilename
  cat "$firstfilename" >$tmpfile.in
  while read filename
  do cgatools join \
          --beta \
          --input $tmpfile.in "$filename" \
          --match <specification> \
          --overlap <overlap_spec> \
          --select <output_fields> \
          --always-dump \
          --output-mode compact  >$tmpfile.out
     mv $tmpfile.out $tmpfile.in
  done
) < file_of_filenames
echo "result is in $tmpfile.in"

Это читает строки (т.е. имена файлов) по одной из вашего file_of_filenames и запускает cgatools, используя это имя файла и предыдущий вывод, создавая новый выходной файл $tmpfile.out. Этот выходной файл переименовывается в входной файл $tmpfile.in и цикл продолжается.

Для обработки начала, первая строка имени файла считывается отдельно (в переменную firstfilename), и этот файл копируется во входной файл, так чтобы у нас есть 2 файла для объединения. Поскольку все команды находятся внутри "()", это гарантирует, что чтение внутри цикла while продолжится с того места, на котором остановилось первое чтение.

0
26.01.2018, 00:38
0 ответов

Теги

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