Ваш скрипт содержит много ошибок как в синтаксисе, так и в алгоритме.Пожалуйста, попробуйте shellcheck, чтобы увидеть, в чем проблема.Самой большой проблемой будет часть $file_length
.Вы можете вызвать здесь функцию file_length()
, но это просто неопределенная переменная, которая оценивается как ноль в цикле for
.
Если вы просто хотите посчитать длину 4-й строки *.fastq
файлов, попробуйте что-то вроде:
for file in *.fastq; do
awk 'NR==4 {print length}' "$file" > "${file}_length.tsv"
done
Или, если вы хотите объединить результаты в один файл TSV, попробуйте:
tsvfile="read_lenth.tsv"
for file in *.fastq; do
echo -n -e "$file\t" >> "$tsvfile"
awk 'NR==4 {print length}' "$file" >> "$tsvfile"
done
Надеюсь, это поможет.