создание файла в определенном каталоге bash

#bash #shell

#bash #оболочка

Вопрос:

Итак, в основном у меня есть программа, которая создает файл, и файл сценария, который в каталоге использует входные данные из этого файла, печатает только последнюю строку файла. проблема в том, что файл создается в его текущем каталоге, и я хочу, чтобы он был создан в заданном. Для этого я использовал команду mv, которая не обязательно создает в другом каталоге, просто перемещая ее, чего я не хочу.

Возможно, вы скажете, что нужно изменить программу, которая создает файл, дело в том, что я не могу. Я могу изменить только файл сценария оболочки.

Программа:

 #!/bin/bash

inputdir="${1}"
outputdir="${2}"
maxthreads="${3}"
Ext=".txt"
prefix="$inputdir/"
for file in $(ls ${inputdir}/*.txt)
do
    filename=$(basename -- "$file" .txt)
    for i in $(seq 1 ${maxthreads})
    do
        echo "InputFile="${filename} "NumThreads="${i}
        outname="${filename}-${i}".txt
        # tecnicofs basically creates the out file
        ./tecnicofs ${file} ${outname} ${i} |sed '/^$/d'| awk NR | sort -nr| awk 'NR==1'
        mv ${outname} ${outputdir}
    done
done
  

Как вы можете видеть в конце, я перемещаю файл в нужный мне выходной каталог, но, как я уже сказал, я хочу переместить, я хочу, чтобы он был создан в выходном каталоге, так что есть ли способ сделать это без создания в моем текущем каталоге и его перемещения?

Комментарии:

1. Почему не просто out="${outputdir}/${filename}-${i}".txt ?

2. на самом деле, потому что filename — это входной файл, используемый в программе tecnicofs

3. Эта строка требует много работы ./tecnicofs ${file} ${outname} ${i} |sed '/^$/d'| awk NR | sort -nr| awk 'NR==1' . Вам не нужно 5 процессов, чтобы удалить пустые строки, подсчитать оставшиеся, отсортировать численно в обратном порядке, а затем вывести первую строку.. sort -nr | head -n1 должно сделать.