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.
Tags bash