while 루프의 처음 3줄을 건너뜁니다.

while 루프의 처음 3줄을 건너뜁니다.

이 코드가 있습니다.

while IFS= read
do
    read -r
    read -r
    read -r

    echo $REPLY

done <<< "$LINES"

행의 데이터는 다음과 같습니다.

----
Test
---- 
1,2,3 
1,2,4 
etc

처음 3개 행을 건너뛰고 4행부터 처리를 시작하고 싶습니다. read -r을 시도했지만 작동하지 않는 것 같습니다. 나는 출력을 원한다 :

1,2,3 
1,2,4 
etc

답변1

이것은 bash에 더 특화된 구문입니다.

i=3 n=0
while read -r line; do
  ((n >= i )) && echo "$line"
  ((n++))
done < file

답변2

변수의 내용이 앞서 언급한 내용과 유사하다는 점을 고려하면, 4번째 줄부터 데이터를 읽어오는 것도 $LINE해결책 중 하나이다. 당신은 이것을 할 수 있습니다,

tail +4 <<< "$LINE"

$LINE그러면 네 번째 줄 부터 마지막 ​​줄까지 모든 줄이 인쇄됩니다 .

결과를 내부적으로 사용하려는 경우 while이는 더 잘 작동합니다 .

while IFS= read -r; do echo $REPLY; done <<< "$(tail +4 <<< "$LINE")".

답변3

전선으로 무엇을 하고 싶은지에 따라 다르지만, 전선으로 감쌀 수 있다면다시 전화하다bash 버전 4 이상이면 mapfile(또는 동의어 readarray) 및 -s(건너뛰기) 옵션을 사용할 수 있습니다.

전임자. 주어진

$ echo "$LINES"
----
Test
---- 
1,2,3 
1,2,4 
etc

그런 다음 정의한 후

myfunc() { printf "%s\n" "$2"; }

넌 할 수있어

$ mapfile -t -s3 -c1 -C 'myfunc' <<< "$LINES"
1,2,3 
1,2,4 
etc

관련 정보