-1

Этот скрипт принимает файл в качестве аргумента. Затем он предлагает пользователю ввести, сколько строк этого файла они хотят прочитать ... и затем он должен прочитать столько строк:

#!/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

Это результат вышеупомянутого с аргументом '3' в 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

Я понимаю, почему это происходит, но затрудняюсь понять, а) не прочитать больше 3 строк и б) правильно перебрать счетчик.

Я заметил, что внутренний цикл while полностью зацикливается на каждой итерации counter . Любой совет, как это изменить? Могу ли я сделать это с помощью одного цикла while?

Благодарю.

0