for 명령의 루프 변수에서 전체 줄을 얻는 방법

for 명령의 루프 변수에서 전체 줄을 얻는 방법

베타 명령을 시작하면 다음과 같은 결과가 나타납니다.

dda6e95c-ecd1-4c22-a8df-f118af6aff02 Mount to DZ70cd on /dev/vda
f01e331e-0394-423f-b8ea-150f6b88029e Mount to DZ74cd on /dev/vdc
9f0d31ec-caa2-4e88-9cbd-4c82ebda5be3 Mount to DZe64c on /dev/vdc
2f3da174-1f9e-40e7-8869-563d90b103f4 Mount to DZ0d76 on /dev/vdc

다음과 같이 bash 루프를 통해 수신된 각 행에 대해 데이터 처리를 수행하고 싶습니다.

 for i in `beta-command` ; do echo $i  ; done ;

나는 다음과 같은 결과를 얻었습니다.

dda6e95c-ecd1-4c22-a8df-f118af6aff02
Mount
to
DZ70cd
on
/dev/vda
f01e331e-0394-423f-b8ea-150f6b88029e
Mount
to
DZ74cd
on
/dev/vdc

루프가 용어 대신 행을 고려하도록 어떻게 요청할 수 있나요?

고마워하는

답변1

설정할 수 있습니다내부 필드 구분 기호( IFS) 줄 바꿈:

IFS=$'\n'; for i in $(beta-command) ; do echo $i; done

또는 while루프를 사용하십시오.

while IFS= read -r i; do
  echo $i
done < <(beta-command)

또는 다음을 사용하십시오 xargs.

beta-command | xargs -I{} echo {}

awk또는 작업이 텍스트 조작에 관한 것이라면 다음을 사용하십시오.

beta-command | awk '{print}'

장점(?)과결점루프를 사용하여 명령 출력 또는 파일의 각 줄을 처리하는 경우이것을 읽어보세요 (@Jeff Schaller에게 감사드립니다).

관련 정보