여러 줄짜리 스크립트 변수가 있습니다. 이 변수를 한 행씩 읽고 각 행을 원하는 방식으로 처리하려면 어떻게해야합니까?쉘 스크립팅의 변수에서 한 줄씩 읽음
10
A
답변
21
는 다음과 같은 여러 줄 변수
x=$(echo -e "a\nb\nc d e")
각 라인에 대한 간단한 과정을 고려 : 단지 echo
이 접두사 = LINE:
와 라인 주변에 작은 따옴표와. 다음 코드 중 하나는 요구 사항을 만족 :
while read line; do echo "LINE: '${line}'"; done <<< "$x"
또는
while read line; do echo "LINE: '${line}'"; done < <(echo "$x")
어느
는 서브 쉘을 (그래서 당신은, 예를 들어, 루프에서 변수를 설정하고 외부에서 액세스 할 수 있습니다)을 작성을하고, 출력LINE: 'a'
LINE: 'b'
LINE: 'c d e'
그러나 당신이 대신 가정 모두
x=$(echo -e "a \n b\nc d e")
# note--------^--^
및 해당 공백 및 공백 문자 (예 : Git 도자기 파싱) 위의 두 코드 모두 전자의 경우와 마찬가지로 후자의 변수/데이터에 대해 정확히 동일한 출력을 제공합니다. 이는 원하는 것이 아닙니다. 선행 및 후행 공백을 보존하려면 while read line
을 while IFS= read -r line
으로 바꾸십시오. 즉, 다음과 같은 코드
while IFS= read -r line; do echo "LINE: '${line}'"; done <<< "$x"
또는
while IFS= read -r line; do echo "LINE: '${line}'"; done < <(echo "$x")
중 하나는
LINE: 'a '
LINE: ' b'
LINE: 'c d e'
은 자세한 내용
Greg Wooledge's excellent Bash FAQ를 참조 생성합니다.
1
일반적으로 "읽는 동안"여러 줄 변수를 처리하는 데 사용하지만 최근에는 파일의 각 줄에서 선행 공백을 제거한 인스턴스가있었습니다. this Unix Stack Exchange answer에서 촬영
printf %s "$var" | while IFS= read -r line
do
echo "$line"
done
코드 :이 대신 고정 내 문제를 사용.
관련 문제
- 1. 스칼라 : 파일을 한 줄씩 한 줄씩 읽음
- 2. txt를 한 줄씩 읽음
- 3. R - STDIN을 한 줄씩 읽음
- 4. C에서 파일을 한 줄씩 읽음
- 5. 자바에서 텍스트를 한 줄씩 읽음.
- 6. C++을 사용하여 한 줄씩 한 줄씩 읽음
- 7. XML 파일에서 데이터를 한 줄씩 읽음
- 8. $는 무엇입니까? 쉘 스크립팅의 의미는 무엇입니까?
- 9. 한 줄씩 텍스트 파일을 스캔하고 유닉스 쉘 스크립트로 라인을 읽으십시오.
- 10. MongoDB 쉘 : 콘솔에서 라인을 읽음
- 11. 파일 한 줄씩 읽기
- 12. 쉘 스크립트의 변수에서 명령 실행
- 13. 쉘 스크립팅의 병렬 처리 'pid가이 쉘의 하위 노드가 아닙니다'
- 14. 한 줄씩 읽는 방법과 키보드에서 입력하는 방법?
- 15. DataGridview에서 한 줄씩 데이터 삽입
- 16. 안드로이드에서 한 줄씩 읽는 방법?
- 17. 한 줄씩 특정 LineItem 제거
- 18. 파일을 한 줄씩 읽는 방법
- 19. 파일에서 한 번에 한 줄씩 출력하기
- 20. inputStream을 한 번에 읽음
- 21. 쉘 스크립팅의 마지막 날에 액세스 한 파일이없는 디렉토리를 tar 화하는 방법은 무엇입니까?
- 22. 매개 변수에서 문자열을 추출하는 쉘 스크립트
- 23. 셸에서 변수를 한 줄씩 읽는 동안 줄을 확인하는 방법
- 24. bash를 사용하여 파일을 한 줄씩 읽으며 일부 데이터를 추출합니다. 방법?
- 25. BizTalk지도 내 스크립팅의 예외
- 26. EXPECT 스크립팅의 기초
- 27. GDB 질문 - 코드를 한 줄씩 어떻게 분해합니까?
- 28. 디버깅 - 코드를 한 줄씩 어떻게 실행합니까?
- 29. CALayer에서 그래프를 한 줄씩 효율적으로 그리는 방법
- 30. VBScript에서 HTML 행을 한 줄씩 읽습니다.
이것은 완벽한 솔루션입니다. 그냥 궁금 해서요. 왜 x = "a \ nb \ nc d e"가 아니겠습니까? –
@SenthilKumar, 해당 문자열은 'a', '\', 'n', 'b'등 10 개의 문자를 포함합니다. "\ n"은 큰 따옴표 안에 들어 있지 않습니다. bash에서는 문자열에 실제 개행 문자가 포함되도록'$ "a \ nb \ nc d e"'를 쓸 수 있습니다. "-e"플래그는 "\ n"을 새로운 행으로 처리하도록 지시하며, 두 개의 개별 문자가 아니라는 것을 알려줍니다. – chepner
@chepner : thx,'$'는 나에게 새로운 것이지만 작은 따옴표 '$'로 \ nb \ nc d e''를 사용합니다. –