쉘 스크립트에서 공백이 줄 바꿈으로 계산되는 이유는 무엇입니까? [복사]

쉘 스크립트에서 공백이 줄 바꿈으로 계산되는 이유는 무엇입니까? [복사]

나는 다음 스크립트를 작성했습니다. 파일을 읽고 한 줄씩 인쇄하고 싶지만 공백을 새 줄로 처리합니다. 왜 그런 겁니까?

#!/bin/bash
for i in `cat data.txt`
do
echo $i
done

입력: 파일 이름으로 저장데이터.txt

B  FM_Server10_grp GPCBIOEMM10          Y          N               ONLINE

산출:

B
FM_Server10_grp
PCBIOEMM10
Y
N
ONLINE

10또 다른 질문: from 과 같은 숫자 값만 추출하는 방법은 무엇입니까 GPCBIOEMM10?

답변1

for i in ...기본적으로 줄 바꿈으로 구분된 토큰 목록 대신 공백으로 구분된 토큰 목록에 대한 반복이 수행됩니다. 공백과 개행 문자는 모두 공백 문자이므로 구분 기호로 간주됩니다.

고려하다:

while read line; do
    echo $line
done < data.txt

기본적으로 read는 개행 문자까지 읽고 읽은 내용을 지정된 변수에 저장합니다.

관련 정보