Этот скрипт принимает файл в качестве аргумента. Затем он предлагает пользователю ввести, сколько строк этого файла они хотят прочитать ... и затем он должен прочитать столько строк:
#!/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?
Благодарю.