Все, что я хочу, это указать определенное количество строк, например, это lineNumberIs=3
и сказать во время чтения, что нужно начинать с этой третьей строки или какого-либо другого номера строки и извлекать строки после опций, чтобы выполнить некоторые команды позже при получении линии Что-то подобное
while read line from $lineNumberIs
do
**some commands not just echo nor printing on the screen**
done < $dataFile
Очень простое решение -
tail -n +K filename
где K = номер строки, с которой вы хотите прочитать файл. Это начнет чтение файла с K-й строки до конца.
while IFS= read -r line; do
# ...
done < <(tail -n "+$lineNumberIs" $dataFile)
tail -n +K
(со знаком плюс) указывает хвосту начинать с указанного номера строки (см. справочную страницу ).
Бит <(...)
является заменой процесса . Это позволяет вам указать последовательность команд и позволить bash читать ее как файл. Это очень удобно, когда вы хотите избежать эффекта подоболочки, созданной в конвейере.
IFS= read -r
используется для чтения строки точно в том виде, в каком она появляется в файле, без удаленных пробелов или escape-последовательностей.
#!/bin/bash
if [ $# -eq 0 ]; then
echo "Please execute $0 with linestoskip parameter"
exit 0
fi
linestoskip=$1
Counter=0
dataFile='/etc/fstab'
while read line
do
if [ $Counter -ge $linestoskip ]; then
echo $line
fi
Counter=`expr $Counter + 1`
done < $dataFile
Этот сценарий ожидает, что количество строк пропустит в качестве параметра. Можно сделать то, что Вам нравится во внутреннем если условие.