![쉘 스크립트에서 공백이 줄 바꿈으로 계산되는 이유는 무엇입니까? [복사]](https://linux55.com/image/79732/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EA%B3%B5%EB%B0%B1%EC%9D%B4%20%EC%A4%84%20%EB%B0%94%EA%BF%88%EC%9C%BC%EB%A1%9C%20%EA%B3%84%EC%82%B0%EB%90%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
나는 다음 스크립트를 작성했습니다. 파일을 읽고 한 줄씩 인쇄하고 싶지만 공백을 새 줄로 처리합니다. 왜 그런 겁니까?
#!/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는 개행 문자까지 읽고 읽은 내용을 지정된 변수에 저장합니다.