Aninhado enquanto loop (provavelmente não é a melhor prática) que eu não consigo descobrir

0

Este script usa um arquivo como argumento. Em seguida, ele solicita que o usuário insira quantas linhas desse arquivo elas querem ler ... e, em seguida, supõe-se que ele leia essas linhas:

#!/bin/bash

read -p "How many lines would you like read out? " NUM_LINES
echo \>\>\>\>\>\> Reading $NUM_LINES lines out of directory: $1 \<\<\<\<\<\<


COUNTER=1
while [ $COUNTER -le $NUM_LINES ]
do
  while read line
  do
    echo "${COUNTER}: ${line}"
    sleep .2
    ((COUNTER++))
  done < $1
done

Esta é a saída do acima com argumento '3' em etc/hosts :

1: ##
1: # Host Database
1: #
1: # localhost is used to configure the loopback interface
1: # when the system is booting.  Do not change this entry.
1: ##
1: 127.0.0.1    localhost
1: 255.255.255.255  broadcasthost
2: ##
2: # Host Database
2: #
2: # localhost is used to configure the loopback interface
2: # when the system is booting.  Do not change this entry.
2: ##
2: 127.0.0.1    localhost
2: 255.255.255.255  broadcasthost
3: ##
3: # Host Database
3: #
3: # localhost is used to configure the loopback interface
3: # when the system is booting.  Do not change this entry.
3: ##
3: 127.0.0.1    localhost
3: 255.255.255.255  broadcasthost

Eu entendo porque isso está acontecendo, mas estou perdido: a) não leio mais de 3 linhas eb) faço uma iteração correta no contador.

Eu noto que o loop interno while faz um loop total em cada iteração de counter . Algum conselho sobre como mudar isso? Posso fazer isso com um loop while?

Obrigado.

    
por Sam Dillard 29.06.2018 / 21:14

0 respostas

Tags