Você está esperando que o valor $PER
seja redefinido para 50 para cada iteração do loop while
externo, mas você não o redefine lá.
Eu também noto que você lê potencialmente muitos dados em uma única variável na parte superior do script.
Isso seria um pouco mais eficiente (assumindo bash
ou ksh
sintaxe):
cut -c 7-21 "Data.txt" |
while read -r code; do
if [[ ! -f "../FASTA_SEC/$code.fa" ]]; then
printf 'No such file: %s\n' "../FASTA_SEC/$code.fa"
continue
fi
for (( win = 2; win < 20; win += 2 )); do
printf 'The value of win is %d, now entereing inner loop\n' "$win"
for (( per = 50; per < 100; per += 2 )); do
printf 'Value of per is %d\n' "$per"
done
done
done
Isso evita a leitura na saída completa de cut
em uma variável e, em vez disso, lê-a linha por linha.
Também evita os incômodos while
loops.